<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Hemershon Silva</title>
    <description>The latest articles on DEV Community by Hemershon Silva (@hemershon).</description>
    <link>https://dev.to/hemershon</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1282491%2F1c5be58f-7191-4e55-b01d-e3a6b4646e05.jpeg</url>
      <title>DEV Community: Hemershon Silva</title>
      <link>https://dev.to/hemershon</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hemershon"/>
    <language>en</language>
    <item>
      <title>Resolvendo Problemas com Assets no Rails</title>
      <dc:creator>Hemershon Silva</dc:creator>
      <pubDate>Thu, 22 Feb 2024 15:16:55 +0000</pubDate>
      <link>https://dev.to/hemershon/resolvendo-problemas-com-assets-no-rails-lfp</link>
      <guid>https://dev.to/hemershon/resolvendo-problemas-com-assets-no-rails-lfp</guid>
      <description>&lt;p&gt;Resolvendo Problemas com Assets no Rails&lt;/p&gt;

&lt;p&gt;Olá, pessoal!&lt;/p&gt;

&lt;p&gt;Hoje quero compartilhar uma dica rápida para resolver problemas com assets no Rails, algo que pode ser um pouco frustrante, mas que tem solução!&lt;/p&gt;

&lt;p&gt;Verifique o Caminho do Asset: Certifique-se de que o caminho para o asset esteja correto em seu arquivo de visualização (view) ou de estilo (stylesheet). Por exemplo, se você estiver referenciando uma imagem, certifique-se de que o caminho esteja correto e que a imagem exista no local esperado.&lt;/p&gt;

&lt;p&gt;Pré-compilação de Assets: Se você estiver enfrentando problemas com assets não sendo carregados em produção, pode ser necessário pré-compilar os assets. Execute o comando &lt;code&gt;RAILS_ENV=production rails assets:precompile&lt;/code&gt;para pré-compilar os assets para o ambiente de produção.&lt;/p&gt;

&lt;p&gt;Verifique as Permissões de Arquivo: Certifique-se de que o servidor web tenha permissão para acessar os assets. Verifique as permissões de arquivo e pasta para garantir que o servidor web possa ler os assets.&lt;/p&gt;

&lt;p&gt;Ative o Servidor de Assets: Se você estiver em um ambiente de desenvolvimento e os assets não estiverem sendo carregados corretamente, verifique se o servidor de assets está ativado. No arquivo &lt;code&gt;config/environments/development.rb&lt;/code&gt;, verifique se a configuração config.assets.debug está definida como true.&lt;/p&gt;

&lt;p&gt;Verifique a Configuração de Rotas: Se estiver enfrentando problemas com rotas de assets, verifique a configuração de rotas em seu arquivo &lt;code&gt;config/routes.rb&lt;/code&gt;. Certifique-se de que as rotas de assets estejam configuradas corretamente.&lt;br&gt;
Exemplos: &lt;/p&gt;

&lt;p&gt;Referenciando uma Imagem em um Arquivo de Estilo (CSS):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;background-image: url('&amp;lt;%= asset_path 'imagem.jpg' %&amp;gt;');&lt;/code&gt;&lt;br&gt;
Neste exemplo, imagem.jpg é o nome do arquivo de imagem localizado na pasta app/assets/images/.&lt;/p&gt;

&lt;p&gt;Referenciando um Arquivo CSS em um Layout (ERB):&lt;br&gt;
&lt;code&gt;&amp;lt;%= stylesheet_link_tag 'meu-estilo' %&amp;gt;&lt;/code&gt;&lt;br&gt;
Neste caso, o arquivo meu-estilo.css está localizado na pasta &lt;code&gt;app/assets/stylesheets/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Referenciando um Arquivo JavaScript em um Layout (ERB):&lt;br&gt;
&lt;code&gt;&amp;lt;%= javascript_include_tag 'meu-script' %&amp;gt;&lt;/code&gt;&lt;br&gt;
O arquivo meu-script.js estaria localizado na pasta &lt;code&gt;app/assets/javascripts/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Referenciando uma Fonte em um Arquivo de Estilo (CSS):&lt;br&gt;
&lt;code&gt;@font-face {&lt;br&gt;
  font-family: 'MinhaFonte';&lt;br&gt;
  src: url('&amp;lt;%= asset_path 'minha-fonte.woff' %&amp;gt;') format('woff');&lt;br&gt;
}&lt;/code&gt;&lt;br&gt;
Neste exemplo, &lt;code&gt;minha-fonte.woff&lt;/code&gt; é o arquivo de fonte localizado na pasta &lt;code&gt;app/assets/fonts/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Espero que essas dicas sejam úteis para resolver problemas com assets no Rails.&lt;/p&gt;

&lt;h1&gt;
  
  
  Rails #DesenvolvimentoWeb #Assets #Problemas #Soluções #Dicas
&lt;/h1&gt;

</description>
    </item>
    <item>
      <title>Fundamentos do Rspec</title>
      <dc:creator>Hemershon Silva</dc:creator>
      <pubDate>Fri, 16 Feb 2024 13:05:18 +0000</pubDate>
      <link>https://dev.to/hemershon/fundamentos-do-rspec-2c33</link>
      <guid>https://dev.to/hemershon/fundamentos-do-rspec-2c33</guid>
      <description>&lt;p&gt;O RSpec é uma biblioteca de teste de comportamento (behavior-driven testing) para a linguagem de programação Ruby. O seu objetivo é facilitar a escrita de testes legíveis e expressivos, fornecendo uma sintaxe clara e concisa que descreve o comportamento esperado de um sistema.&lt;/p&gt;

&lt;p&gt;O fundamento básico do RSpec é o uso de uma sintaxe de domínio específica (DSL - Domain Specific Language) que permite que os testes sejam escritos de forma semelhante à especificação do comportamento do sistema. Isso ajuda a criar uma documentação viva dos requisitos e comportamentos esperados, além de facilitar a leitura e manutenção dos testes.&lt;/p&gt;

&lt;p&gt;O RSpec segue uma abordagem chamada "describe-it", onde os testes são organizados em blocos descritivos chamados "describe" que agrupam os cenários de teste relacionados. Dentro de cada bloco "describe", são definidos os testes individuais utilizando a palavra-chave "it". Cada teste deve ter uma expectativa (expectation) que define o resultado esperado.&lt;/p&gt;

&lt;p&gt;Além disso, o RSpec fornece uma série de "matchers" que são utilizados para verificar se um resultado é igual ao esperado. Esses matchers incluem comparações de igualdade, verificação de tipos, comparação de coleções, entre outros.&lt;/p&gt;

&lt;p&gt;A estrutura básica de um teste RSpec é a seguinte:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
describe "Nome do objeto em teste" do
  it "descrição do cenário de teste" do
    # Configuração do ambiente de teste

    # Ação a ser testada

    # Verificação do resultado esperado usando os matchers
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essa é apenas uma visão geral do fundamento básico do RSpec. A biblioteca oferece muitos recursos adicionais, como "before" e "after" hooks para configuração prévia e limpeza posterior dos testes, uso de "context" para definir diferentes cenários, uso de "mocks" e "stubs" para simular comportamentos, entre outros. Esses recursos permitem que os testes sejam escritos de forma mais eficiente e flexível.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Métodos para tratar array</title>
      <dc:creator>Hemershon Silva</dc:creator>
      <pubDate>Fri, 16 Feb 2024 12:30:16 +0000</pubDate>
      <link>https://dev.to/hemershon/metodos-para-tratar-array-59jb</link>
      <guid>https://dev.to/hemershon/metodos-para-tratar-array-59jb</guid>
      <description>&lt;p&gt;Recentemente me deparei em uma situação interessante, qual é o momento em que devemos usar &lt;strong&gt;map&lt;/strong&gt;, &lt;strong&gt;select&lt;/strong&gt; e o &lt;em&gt;each&lt;/em&gt;, normalmente eu uso o &lt;strong&gt;each&lt;/strong&gt; com frequência aí veio a dúvida em qual momento devemos usar os outros métodos e qual é a diferença entre eles?&lt;/p&gt;

&lt;p&gt;Dica: antes de procura em toda parte da web vá primeiro na documentação leia se não entendeu procure contexto diferentes de explicação, por que é importante você saber usar a documentação. Procurando na documentação você se depara com a seguinte situação;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MAP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;map&lt;/strong&gt; invoca o bloco fornecido uma vez para cada elemento de self. Criando um novo array contendo os valores retornados pelo bloco, se caso nenhum bloco for fornecido, um Enumerador será retornado&lt;/p&gt;

&lt;p&gt;Detalhes do &lt;strong&gt;map&lt;/strong&gt;:&lt;br&gt;
O podemos usar ele com &lt;strong&gt;&lt;em&gt;arrays&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;hashes&lt;/em&gt;&lt;/strong&gt; e &lt;strong&gt;&lt;em&gt;ranges&lt;/em&gt;&lt;/strong&gt; o principal uso do &lt;strong&gt;&lt;em&gt;map&lt;/em&gt;&lt;/strong&gt; é transformar dados.&lt;/p&gt;

&lt;p&gt;por exemplo: &lt;br&gt;
Dada uma matriz de strings, você pode passar por cima de cada string e tornar cada caractere maiúsculo&lt;/p&gt;

&lt;p&gt;Sintaxe do map no Ruby&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;array = ["a", "b", "c"]
array.map { |string| string.upcase } # ["A", "B", "C"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Collect&lt;br&gt;
A &lt;strong&gt;collect&lt;/strong&gt; invoca o bloco fornecido uma vez para cada elemento de self, ele criar um novo array contendo os valores retornados pelo bloco, se não estiver nenhum bloco ele será retornado um Enumerador, no caso é a mesma coisa que o map.&lt;/p&gt;

&lt;p&gt;Detalhes do collect&lt;/p&gt;

&lt;p&gt;O collect() de enumerable é um método embutido em ruby que retorna um novo array com resultados da execução do bloco uma vez para cada elemento em enum O objeto é repetido todas as veses para cada enum, caso nenhum objeto seja fornecido, ele retorna nil para cada enum&lt;/p&gt;

&lt;p&gt;Sintaxe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(r1..r2).collect {|obj| bloquado }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Parâmetros: A função pega o objeto e o bloco que é para cada enum, também leva r1 e r2 que decide o número de elementos no enumerável retornado.&lt;/p&gt;

&lt;p&gt;valor do retorno: Retorna um novo array&lt;/p&gt;

&lt;p&gt;retorna o enumerador&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;enu = (2..6).collect { |x| x * 10 } # [20, 30, 40, 50, 60]
retorna o valor nil

enu = (2..6).collect {} # [nil, nil, nil, nil, nil]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;fonte: Geeksforgeeks&lt;br&gt;
Select&lt;/p&gt;

&lt;p&gt;O &lt;strong&gt;select&lt;/strong&gt; funciona de duas maneiras únicas; Primeiro: pega o bloco para que possa ser usado como array#select Segundo: Modifica a instrução SELECT da consulta para que apenas determinados campos sejam recuperados.&lt;/p&gt;

&lt;p&gt;Exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[1, 2, 3, 4, 5].select { |num| num.event? } # [2, 4]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo 2:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
a = %w{ a b c d e f }
a.select { |v| v =~ /[aeiou]/ } # ["a", "e"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Detalhes do select&lt;/p&gt;

&lt;p&gt;Select é um método de calsse array que retorna um novo array contendo todos os elementos do array para os quais o bloco dado retorna um valor verdadeiro.&lt;/p&gt;

&lt;p&gt;Sintaxe: array.select()&lt;/p&gt;

&lt;p&gt;Parâmentro: Matriz&lt;/p&gt;

&lt;p&gt;Retorno: Uma nova matriz contendo todos os elemetos da matriz para os quais o bloco fornecido retorna um valor verdadeiro.&lt;/p&gt;

&lt;p&gt;fonte: Geeksforgeeks&lt;/p&gt;

&lt;p&gt;O each chama o bloco fornecido uma vez para cada elemento em self, passando esse elemento como um parâmetro, no caso ele retornar o próprio array, se caso nenhum bloco for fornecedor ele também traz um Enumerador.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; a = [ "a", "b", "c" ]
 a.each { |x| print x, "--" } # a--b--c-- =&amp;gt; ["a", "b", "c"] 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Isso foi um resumo para entender melhor como tratar seus array usando métodos diferentes para situações diferentes.&lt;/p&gt;

&lt;p&gt;Fontes: &lt;a href="https://ruby-doc.org/core-2.7.0/Array.html"&gt;Apidock&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
      <category>algorithms</category>
    </item>
  </channel>
</rss>
