<?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>Forem: Dominique Morem</title>
    <description>The latest articles on Forem by Dominique Morem (@dominique_morem).</description>
    <link>https://forem.com/dominique_morem</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%2F3547356%2Fbf0d7169-1779-4ccd-a1fe-bb4ecd7f284e.png</url>
      <title>Forem: Dominique Morem</title>
      <link>https://forem.com/dominique_morem</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dominique_morem"/>
    <language>en</language>
    <item>
      <title>Enums no Rails 8: anatomia e uma aplicação prática</title>
      <dc:creator>Dominique Morem</dc:creator>
      <pubDate>Sat, 03 Jan 2026 17:43:12 +0000</pubDate>
      <link>https://forem.com/dominique_morem/enums-no-rails-8-anatomia-e-aplicacao-4joo</link>
      <guid>https://forem.com/dominique_morem/enums-no-rails-8-anatomia-e-aplicacao-4joo</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Por uma questão de Legibilidade e Manutenibilidade escolherei trabalhar com enums do tipo string e não sendo do tipo integer, que é o mais comum.  Michał Rudzki fez um &lt;a href="https://medium.com/@michal.a.rudzki/rails-enums-integer-vs-string-way-0cb5e34daf7f" rel="noopener noreferrer"&gt;artigo&lt;/a&gt; muito bom com um comparativo de perfomance, bem como indicando os pontos positivos e negativos entre os dois. &lt;/p&gt;

&lt;p&gt;Rudzki deu dois grandes motivos para optar pelo enum com o tipo string: em enums baseados em &lt;em&gt;string&lt;/em&gt;, você pode ler os dados do registro diretamente do banco de dados (o que favorece a legibilidade), e, você pode adicionar um enum facilmente a uma coluna existente, sem precisar se preocupar com possível perda de dados se utilizar o tipo string ( o que contribui na manutenibilidade).&lt;/p&gt;

&lt;p&gt;Dito isso, vamos aplicação do enum. Antes de começarmos, pressuponho que você já tenha feita e migrada a tabela na qual deseja colocar o seu enum. A tabela - não só ela mas todo o MVC envolvido nos Usuários - que usaremos aqui foi criada da seguinte forma e com os seguintes campos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="n"&gt;scaffold&lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt; &lt;span class="nb"&gt;name&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt; &lt;span class="n"&gt;birthdate&lt;/span&gt;&lt;span class="ss"&gt;:date&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso eu dei o &lt;strong&gt;rails db:migrate&lt;/strong&gt; (já tinha criado o banco de dados previamente) e então partimos para o ponto de colocação do enum que veremos à seguir...&lt;/p&gt;

&lt;h2&gt;
  
  
  1 - Gere a MIGRATION
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="n"&gt;g&lt;/span&gt; &lt;span class="n"&gt;migration&lt;/span&gt; &lt;span class="no"&gt;AddMaritalStatusToUsers&lt;/span&gt; &lt;span class="n"&gt;marital_status&lt;/span&gt;&lt;span class="ss"&gt;:string:index&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Onde:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AddMaritalStatusToUsers - É o comando que indica pro Rails que você quer colocar uma nova coluna em uma determinada entidade do seu banco de dados. No seu caso será: &lt;em&gt;AddNomeDoSeuEnumToNomeDaSuaTabela&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;marital_status - É o nome da coluna a ser adicionada a tabela Users&lt;/li&gt;
&lt;li&gt;string - O tipo de dado que essa coluna receberá&lt;/li&gt;
&lt;li&gt;index - Cria um índice para a coluna, o índice é uma estrutura auxiliar do banco que acelera buscas.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2 - Edite a MIGRATION
&lt;/h2&gt;

&lt;p&gt;Acrescente o &lt;strong&gt;default: "solteiro":&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkbswg3a300p47nm9di6o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkbswg3a300p47nm9di6o.png" alt="'Image description'" width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isso vai colocar por padrão (se o usuário não marcar nada) o enum como: "solteiro". Todos os campos que estão em branco ficarão com esse status automaticamente.&lt;/p&gt;

&lt;p&gt;Execute no prompt:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;rails&lt;/span&gt; &lt;span class="n"&gt;db&lt;/span&gt;&lt;span class="ss"&gt;:migrate&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Explicando melhor as linhas da migration
&lt;/h3&gt;

&lt;p&gt;Sobre o add_column:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcr9b5igcu4dsotolo3c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flcr9b5igcu4dsotolo3c.png" alt="'Image description'" width="796" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sobre o add_index:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpwmmtpgv3lx0m1gz31s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcpwmmtpgv3lx0m1gz31s.png" alt="'Image description'" width="791" height="440"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  3 - Anatomia do enum no MODEL
&lt;/h2&gt;

&lt;p&gt;Vamos configurar agora o nosso enum no model.&lt;/p&gt;

&lt;p&gt;Bem, a "anatomia" do Enum do tipo string no Rails 8 é tipo essa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;enum&lt;/span&gt; &lt;span class="ss"&gt;:nome_do_seu_enum&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="ss"&gt;chave1: &lt;/span&gt;&lt;span class="s2"&gt;"valor1"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="ss"&gt;chave2: &lt;/span&gt;&lt;span class="s2"&gt;"valor2,
chave3: "&lt;/span&gt;&lt;span class="n"&gt;valor3&lt;/span&gt;&lt;span class="s2"&gt;"
}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;As bases para se chegar a essa 'anatomia' estão &lt;a href="https://medium.com/@michal.a.rudzki/rails-enums-integer-vs-string-way-0cb5e34daf7f" rel="noopener noreferrer"&gt;aqui&lt;/a&gt; (no artigo do Michał Rudzki) e &lt;a href="https://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html" rel="noopener noreferrer"&gt;aqui&lt;/a&gt; (na documentação do Rails 8).&lt;/p&gt;

&lt;p&gt;Aplicando o enum ao nosso cado aqui vai ficar assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;enum&lt;/span&gt; &lt;span class="ss"&gt;:marital_status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="ss"&gt;solteiro: &lt;/span&gt;&lt;span class="s2"&gt;"solteiro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;casado: &lt;/span&gt;&lt;span class="s2"&gt;"casado"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;divorciado: &lt;/span&gt;&lt;span class="s2"&gt;"divorciado"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;viuvo: &lt;/span&gt;&lt;span class="s2"&gt;"viuvo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="ss"&gt;uniao_estavel: &lt;/span&gt;&lt;span class="s2"&gt;"uniao_estavel"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Há algo interessante que podemos aplicar a esse enum também para facilitar a nossa vida... o "prefix: true". Mas para quê ele serve?&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 - O que o "prefix: true" faz?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5soqvqd50dey595oiceg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5soqvqd50dey595oiceg.png" alt="'Image description'" width="368" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ele &lt;strong&gt;adiciona um prefixo com o nome do atributo&lt;/strong&gt; aos métodos gerados pelo &lt;strong&gt;enum&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Sem prefixo, o Rails criaria métodos assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;solteiro?&lt;/span&gt;
&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;casado?&lt;/span&gt;
&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;viuvo!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com &lt;code&gt;prefix: true&lt;/code&gt;, eles viram:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;marital_status_solteiro?&lt;/span&gt;
&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;marital_status_casado?&lt;/span&gt;
&lt;span class="n"&gt;customer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;marital_status_viuvo!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Com &lt;code&gt;prefix: true&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;tudo fica explícito&lt;/li&gt;
&lt;li&gt;mais legível em projetos grandes&lt;/li&gt;
&lt;li&gt;menos bugs “fantasma”&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3.2 - Adicionando validações
&lt;/h3&gt;

&lt;p&gt;Vamos acrescentar as seguintes validações ao nosso enum:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;validates&lt;/span&gt; &lt;span class="ss"&gt;:marital_status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;presence: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="ss"&gt;inclusion: &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="ss"&gt;in: &lt;/span&gt;&lt;span class="n"&gt;marital_statuses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Onde cada validação diz o seguinte:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;validates - Rails valide para mim a seguinte estrutura&lt;/li&gt;
&lt;li&gt;:marital_status - A coluna a ser validada&lt;/li&gt;
&lt;li&gt;presence: true - Torna o preenchimento daquela coluna obrigatório, ou seja, não pode ser enviado ao banco de dados como nulo (nil), não pode ir em branco.&lt;/li&gt;
&lt;li&gt;inclusion: - Valida que o valor do atributo está dentro de uma lista específica de valores permitidos.&lt;/li&gt;
&lt;li&gt;marital_statuses.keys - Retorna um array com as chaves que poderão ser aceitas: ["solteiro", "casado", "divorciado", "viuvo", "uniao_estavel"].&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ou seja, o "&lt;strong&gt;presence&lt;/strong&gt;" impede valores vazios e o "&lt;strong&gt;inclusion&lt;/strong&gt;" impede valores inválidos, que não correspondam aos valores previamente passados.&lt;/p&gt;

&lt;h2&gt;
  
  
  4 - Permita a coluna no CONTROLLER
&lt;/h2&gt;

&lt;p&gt;No Rails existe um conceito chamado: &lt;strong&gt;Strong Parameters&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Esse Strong Parameters quer dizer basicamente: Nenhum dado vindo do usuário entra no model se o programador do projeto não permitir explicitamente (isso por uma questão de segurança).&lt;/p&gt;

&lt;p&gt;Ou seja, se você não for ao método "user_params" e não colocar o "marital_status" explicitamente lá, o Rails &lt;strong&gt;simplesmente vai ignorar&lt;/strong&gt; esse campo e seguir pleníssimo sem enviar essa informação para o banco da dados.&lt;/p&gt;

&lt;p&gt;Por isso, vamos acrescentar a coluna 'marital_status' ao nosso método &lt;strong&gt;'user_params'&lt;/strong&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvs970dhip1z85cqehh4l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvs970dhip1z85cqehh4l.png" alt="'Image description'" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5 - Trabalhando com o enum nas VIEWs
&lt;/h2&gt;

&lt;p&gt;Vamos precisar mexer em duas partials (fragmentos de view reutilizáveis):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma que diz respeito ao formulário que será aplicado ao usuário (&lt;strong&gt;_form.html.erb&lt;/strong&gt;) &lt;/li&gt;
&lt;li&gt;Outra que diz respeito a exibição daquele usuário depois de cadastrado (&lt;strong&gt;_user.html.erb&lt;/strong&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Prensando primeiro no select (menu) que faremos para o usuário escolher o seu status civil no formulário...&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 - Lidando com o enum no _form.html.erb
&lt;/h3&gt;

&lt;p&gt;No enum atualmente temos os seguintes valores para os estados civis:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;enum&lt;/span&gt; &lt;span class="ss"&gt;:marital_status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="ss"&gt;solteiro: &lt;/span&gt;&lt;span class="s2"&gt;"solteiro"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="ss"&gt;casado: &lt;/span&gt;&lt;span class="s2"&gt;"casado"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="ss"&gt;divorciado: &lt;/span&gt;&lt;span class="s2"&gt;"divorciado"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="ss"&gt;viuvo: &lt;/span&gt;&lt;span class="s2"&gt;"viuvo"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="ss"&gt;uniao_estavel: &lt;/span&gt;&lt;span class="s2"&gt;"uniao_estavel"&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="ss"&gt;prefix: &lt;/span&gt;&lt;span class="kp"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como podem ver, teremos um sério desconforto caso esses valores forem exibidos no menu para o usuário dessa forma. Isso porque:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;União Estável possui espaço e acentos&lt;/li&gt;
&lt;li&gt;Viúvo também possui acento&lt;/li&gt;
&lt;li&gt;O ideal é que os status civis viessem com letra maiúscula&lt;/li&gt;
&lt;li&gt;Os usuários serão de ambos os gêneros, logo, o ideal seria colocar a partícula (a) na intenção de contemplar a ambos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para resolver isso ao renderizar a partial sair com os valores bonitinhos no menu. &lt;/p&gt;

&lt;h3&gt;
  
  
  5.1.1 - Criando a constante que vai receber o hash com a tradução
&lt;/h3&gt;

&lt;p&gt;Façamos o seguinte, vamos ao model user.rb:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;app&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;models&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rb&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Uma vez que estejamos no model, vamos criar uma constante que irá conter um hash (chave/valor) de dados contendo as chaves que estão do jeitinho lá do enum e os valores traduzidos:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="no"&gt;MARITAL_STATUS_TRANSLATIONS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="s2"&gt;"solteiro"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Solteiro(a)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="s2"&gt;"casado"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Casado(a)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="s2"&gt;"divorciado"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Divorciado(a)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="s2"&gt;"viuvo"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"Viúvo(a)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="s2"&gt;"uniao_estavel"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;"União Estável"&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pronto agora já temos uma 'tradução' com as perfumarias que queremos exibir!&lt;/p&gt;

&lt;p&gt;Ok, mas como vamos aplicar isso a partial? &lt;/p&gt;

&lt;h3&gt;
  
  
  5.1.2 - Entendendo o helper options_for_select
&lt;/h3&gt;

&lt;p&gt;Vamos a &lt;a href="https://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html#method-i-options_for_select" rel="noopener noreferrer"&gt;documentação&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Para montar o nosso select (menu com os enums) vamos utilizar o helper   &lt;strong&gt;options_for_select&lt;/strong&gt; (ele é do tipo Form Options Helper). Vamos dar uma olhadinha na documentação dele:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26vlhhf7kpz1v8sdjcev.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F26vlhhf7kpz1v8sdjcev.png" alt="'Image description'" width="795" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ele aceita diversas opções de entrada: hash, array e enumerável. Vamos utilizar essa primeira onde ele aceita receber arrays com chave/valor. Repare que: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;O Primeiro elemento&lt;/strong&gt; - É o texto que o usuário vê (ex: "Dollar")&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;O Segundo elemento&lt;/strong&gt; - É o valor a ser salvo no banco (ex: "\$")&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Então o array que vamos gerar precisará ter os primeiros elementos como sendo o valores bonitinhos e os segundos elementos os valores corretos do enum que são os que de fato vão para o banco. Vamos lá criá-lo entao...&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1.3 - Criando método no model que vai nos ajudar na view
&lt;/h3&gt;

&lt;p&gt;Vamos ao user.rb (app &amp;gt; models : user.rb) e neste criaremos um método de classe - ou seja, um método que pertence à classe em si. Que não precisa criar um objeto, chama direto na classe - para facilitar a nossa vida na hora de montar o select lá na view e deixar o codigo da view mais limpo e independente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nc"&gt;self&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;marital_status_to_select&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;marital_statuses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="no"&gt;MARITAL_STATUS_TRANSLATIONS&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Onde: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;self.&lt;/strong&gt; - indica que é um método de &lt;strong&gt;classe&lt;/strong&gt;, não de instância&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;marital_statuses.keys&lt;/strong&gt; - pega todas as chaves do enum como array: &lt;code&gt;["solteiro", "casado", "divorciado", "viuvo", "uniao_estavel"]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;.map { |values| ... }&lt;/strong&gt; - itera sobre cada valor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;[MARITAL_STATUS_TRANSLATIONS[values], values]&lt;/strong&gt; - cria um array com 2 elementos:

&lt;ul&gt;
&lt;li&gt;Primeiro elemento: texto que o usuário vê (ex: "Solteiro(a)")&lt;/li&gt;
&lt;li&gt;Segundo elemento: valor salvo no banco (ex: "solteiro")&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Com isso, teremos o seguinte retorno:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Solteiro(a)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"solteiro"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Casado(a)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"casado"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Divorciado(a)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"divorciado"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"Viúvo(a)"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"viuvo"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"União Estável"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"uniao_estavel"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Perfeito, agora vamos lá as views aplicá-lo a partial do formulário...&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1.4 - Aplicando o método de classe na partial
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= form.label :marital_status, style: "display: block" %&amp;gt;
    &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt; &lt;span class="ss"&gt;:marital_status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;options_for_select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;marital_status_to_select&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt;&lt;span class="o"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  5.1.5 - Deixando opção pré-selecionada em caso de edição
&lt;/h3&gt;

&lt;p&gt;A partial &lt;strong&gt;_form.html.erb&lt;/strong&gt; pode ser utilizada tanto no cadastro de um usuário novo como na edição de um usuário já existente.  &lt;/p&gt;

&lt;p&gt;Levando em consideração essa segunda possibilidade  utilizaremos o  &lt;strong&gt;form.object.marital_status&lt;/strong&gt;. Ele é usado para &lt;strong&gt;pré-selecionar&lt;/strong&gt; a opção correta no dropdown quando você está editando um usuário existente.&lt;/p&gt;

&lt;p&gt;A coisa toda vai ficar assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= form.label :marital_status, style: "display: block" %&amp;gt;
    &amp;lt;%=&lt;/span&gt; &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;select&lt;/span&gt; &lt;span class="ss"&gt;:marital_status&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                    &lt;span class="n"&gt;options_for_select&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
                      &lt;span class="no"&gt;User&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;marital_status_to_select&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                      &lt;span class="n"&gt;form&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;marital_status&lt;/span&gt;
                    &lt;span class="p"&gt;)&lt;/span&gt;
     &lt;span class="sx"&gt;%&amp;gt;
  &amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5.2 - Lidando com o enum no _user.html.erb
&lt;/h2&gt;

&lt;p&gt;Para além de dar a opções bonitinhas, bem legíveis e amigáveis lá para a pessoa na hora de marcar no select (menu) do formulário, devemos prover também ao usuário  poder ver o seu status matrimonial de maneira linda e amigável depois que preencher e enviar o nosso formulário. &lt;/p&gt;

&lt;p&gt;Para isso é que vamos mexer na partial &lt;strong&gt;_user.html.erb&lt;/strong&gt; . Mas antes precisamos configurar algo no model dos usuários.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2.1 - Criando o método para a tradução no Model
&lt;/h3&gt;

&lt;p&gt;Vamos até o user.rb (Ctrl + p para fazer a busca rápida). &lt;/p&gt;

&lt;p&gt;Uma vez no model criaremos neste um método de instância (ou seja, que pertence a um &lt;strong&gt;objeto específico&lt;/strong&gt; (uma instância da classe) para fazer essa tradução bonitinha pro usuário na hora que ele for ver o cadastro que acabou de criar.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7bxtmxmxj174rv1qepz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7bxtmxmxj174rv1qepz.png" alt="'Image description'" width="780" height="535"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Onde:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;marital_status&lt;/strong&gt; - Esse marital_status é o valor do atributo da instância atual do User. Ou seja, ele vem da coluna marital_status e não do enum.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MARITAL_STATUS_TRANSLATIONS[...]&lt;/strong&gt; - Usa esse valor como chave no hash de traduções&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Um exemplo do que acontece ao aplicar esse método:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;marital_status&lt;/strong&gt; retorna "solteiro"&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MARITAL_STATUS_TRANSLATIONS["solteiro"]&lt;/strong&gt; busca no hash&lt;/li&gt;
&lt;li&gt;Retorna "&lt;strong&gt;Solteiro(a)&lt;/strong&gt;"&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  5.2.2 - Modificando na partial _user.html.erb
&lt;/h3&gt;

&lt;p&gt;Uma vez que você esteja na partial, basta aplicar o método ao objeto de user e vòi la vai ficar com o textinho na tela!!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;div&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;strong&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="no"&gt;Marital&lt;/span&gt; &lt;span class="no"&gt;Status&lt;/span&gt;&lt;span class="ss"&gt;:&amp;lt;&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;strong&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="err"&gt; &lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= user.marital_status_humanized %&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1t90q5nz1ngt61qbqb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb1t90q5nz1ngt61qbqb1.png" alt="'Image description'" width="345" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  6 - Possibilidades de melhoria
&lt;/h2&gt;

&lt;p&gt;Obviamente o conteúdo que cá está não esgota a temática dos enums no Rails, e nem pretende fazê-lo! Existem inúmeros tópicos que poderiam ser debatidos ainda nos enums, como por exemplo: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A aplicação do I18n para internacionalização e adaptação a outros idiomas.&lt;/li&gt;
&lt;li&gt;A remoção do 'default' da migration podendo, consequentemente, colocar um placeholder no select&lt;/li&gt;
&lt;li&gt;Falar de scopes&lt;/li&gt;
&lt;li&gt;Entre outros temas...&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
      <category>enum</category>
      <category>enumeration</category>
    </item>
    <item>
      <title>Colocando Favicon na sua Aplicação Ruby/Rails</title>
      <dc:creator>Dominique Morem</dc:creator>
      <pubDate>Mon, 13 Oct 2025 01:54:16 +0000</pubDate>
      <link>https://forem.com/dominique_morem/colocando-favicon-na-sua-aplicacao-rubyrails-2k2g</link>
      <guid>https://forem.com/dominique_morem/colocando-favicon-na-sua-aplicacao-rubyrails-2k2g</guid>
      <description>&lt;p&gt;Fala pessoal! Hoje vamos aprender a colocar um Favicon em nossa aplicação web. Para quem não sabe, um favicon (junção de favorite + icon) é um pequeno ícone gráfico associado a um site ou página da web, normalmente ele fica na aba do navegador, ao lado do título da página. Pois bem, é isso que vamos colocar!&lt;/p&gt;

&lt;p&gt;Então, se você se interessou, vem comigo!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Pegue o logotipo e traga para dentro do projeto
&lt;/h2&gt;

&lt;p&gt;Pegue a imagem do logotipo que deseja inserir na aba da sua aplicação nomeie-a como 'favicon.png' - o Rails aceita tanto no formato .png, quanto no .ico, talvez aceite .svg também mas eu nunca testei para saber - e arraste-a para dentro da pasta 'Images'. &lt;/p&gt;

&lt;p&gt;Essa pasta fica no seguinte caminho dentro da sua aplicação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;app &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; assets &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para ficar melhor de ver:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3x0xg8745tldn8oyvc6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh3x0xg8745tldn8oyvc6.png" alt="'Image description'" width="276" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Faça os devidos ajustes no arquivo application.html.erb
&lt;/h2&gt;

&lt;p&gt;Uma vez que a imagem do logotipo esteja no projeto você vai até o arquivo &lt;strong&gt;application.html.erb&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ele fica normalmente em:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;app &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; views &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; layouts 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Bem aqui ó:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fppgwfaal21qogth2y6ry.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fppgwfaal21qogth2y6ry.png" alt="'Image description'" width="277" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Nesse arquivo bem depois das metatags você vai:&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 - Remover esse trecho HTML aqui
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmvc2efy34473aa15i4zm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmvc2efy34473aa15i4zm.png" alt="'Image description'" width="800" height="483"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 - Inserir a seguinte tag depois das metatags
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sx"&gt;%= favicon_link_tag 'favicon.png' %&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.3 - O antes e depois
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;ANTES&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvna2zug2r7q575hlxata.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvna2zug2r7q575hlxata.png" alt="'Image description'" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DEPOIS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcmek5v6upjhr4unopp85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcmek5v6upjhr4unopp85.png" alt="'Image description'" width="800" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3 - Limpando o cache e reiniciando o servidor
&lt;/h2&gt;

&lt;p&gt;Antes de darmos seguimento de apresentação do favicon, precisamos garantir que o cache do seu navegador está limpo pois isso pode dar problema na hora de mostrar o icone na aba. &lt;/p&gt;

&lt;p&gt;Dê um:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ctrl + Shift + Delete&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Limpe o seu cache e depois prosseguimos.&lt;/p&gt;

&lt;p&gt;Pois bem, agora para fechar com chave de ouro devemos restartar o nosso servidor no Rails. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ctrl + C&lt;/strong&gt; - Para parar o servidor&lt;/p&gt;

&lt;p&gt;E&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;bin/dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No terminal para restartá-lo.&lt;/p&gt;

&lt;p&gt;Abra o localhost e lá vai estar ele! &lt;/p&gt;

&lt;p&gt;O seu favicon lindo e pleno!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcgqaiec6r9bkz6jqioa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpcgqaiec6r9bkz6jqioa.png" alt="'Image description'" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Espero ter ajudado.&lt;/p&gt;

&lt;p&gt;Abraço à todos,&lt;/p&gt;

&lt;p&gt;Dominique.&lt;/p&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
      <category>favicon</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Configuração setup básico p/ projetos Ruby/Rails - utilizando o WSL 2</title>
      <dc:creator>Dominique Morem</dc:creator>
      <pubDate>Wed, 08 Oct 2025 15:44:48 +0000</pubDate>
      <link>https://forem.com/videosdeti/configuracao-setup-basico-p-projetos-rubyrails-utilizando-o-wsl-2-3ngf</link>
      <guid>https://forem.com/videosdeti/configuracao-setup-basico-p-projetos-rubyrails-utilizando-o-wsl-2-3ngf</guid>
      <description>&lt;h2&gt;
  
  
  O que será visto durante esta postagem:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Instalação do Windows Terminal.&lt;/li&gt;
&lt;li&gt;Instalação do WSL 2. &lt;/li&gt;
&lt;li&gt;Instalação e configuração do Ubuntu.&lt;/li&gt;
&lt;li&gt;Instalação do Git.&lt;/li&gt;
&lt;li&gt;Instalação do PostgreSQL.&lt;/li&gt;
&lt;li&gt;Instalação e configuração do VSCode.&lt;/li&gt;
&lt;li&gt;Instalação do Rails.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Observação inicial
&lt;/h2&gt;

&lt;p&gt;Pessoal, alguns dos passos apresentados neste guia podem ser acompanhados em vídeo no canal &lt;a href="https://www.youtube.com/@videosdeti1954" rel="noopener noreferrer"&gt;Vídeos de TI&lt;/a&gt; no Youtube, que também traz tutoriais práticos e explicativos sobre a temática aqui abordada. Para quem aprende bem por meio de audiovisual, fica a dica. Alguns dos exemplos de conteúdos aqui presentes que vocês também encontrarão por lá são os comandos básicos do terminal Ubuntu (&lt;a href="https://www.youtube.com/watch?v=tlNLIj01Bmo&amp;amp;list=PLmSWX0ePcw4iMR1nTLXmsamnvOnnMNCNO&amp;amp;index=9" rel="noopener noreferrer"&gt;video&lt;/a&gt;) e o processo de instalação do RVM (&lt;a href="https://www.youtube.com/watch?v=naswiUjtq58" rel="noopener noreferrer"&gt;video&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Assim, você poderá optar por seguir via texto por aqui, ou por acompanhar visualmente pelo canal, o que for mais confortável a sua pessoa. &lt;/p&gt;

&lt;h2&gt;
  
  
  1 - Começando pela instalação do Windows Terminal
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Este passo é opcional&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;O Windows Terminal é uma interface moderna para usar vários shells (CMD, PowerShell, WSL, etc). Apesar de ser opcional, ele é muito recomendado pois facilita quando formos utilizar o WSL 2.&lt;/p&gt;

&lt;p&gt;Para instalá-lo é muito simples.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1.1 - Vá até a Microsoft Store
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnarz21zqdzc3r52d5gb2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnarz21zqdzc3r52d5gb2.png" alt="'Image description'" width="476" height="405"&gt;&lt;/a&gt; &lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1.2 - Na Microsoft Store busque por ‘Windows Terminal’
&lt;/h3&gt;

&lt;p&gt;E clique nessa opção do menu:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffyz8goymmk3mets14l0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffyz8goymmk3mets14l0j.png" alt="'Image description'" width="800" height="147"&gt;&lt;/a&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1.3 - Clique em 'Abrir'
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fug2hj3t168m7dkrc8nk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fug2hj3t168m7dkrc8nk2.png" alt="'Image description'" width="800" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Pronto! Já temos o Windows Terminal instalado!&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  2 - Instalando o WSL 2
&lt;/h2&gt;


&lt;h3&gt;
  
  
  O que é o WSL 2 e por que instalá-lo?
&lt;/h3&gt;

&lt;p&gt;WSL 2 (Windows Subsystem for Linux 2) é uma tecnologia da Microsoft que permite rodar um ambiente Linux completo dentro do Windows, de maneira leve e integrada. &lt;/p&gt;

&lt;p&gt;Em vez de usar uma máquina virtual tradicional, o WSL 2 roda um kernel Linux real dentro do Windows - só que em segundo plano - permitindo executar comandos, ferramentas e aplicações Linux, como se você estivesse num Ubuntu ou Debian, contudo sem sair do Windows.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Por que o WSL 2 é importante no desenvolvimento em Ruby?
&lt;/h3&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A maioria das aplicações Ruby (especialmente as do Rails) são desenvolvidas e implantadas em servidores Linux.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Usar WSL 2 faz com que seu ambiente local seja idêntico ao do servidor de produção — evitando aquele clássico “funcionava no meu Windows”.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Muitas gems Ruby dependem de bibliotecas nativas do Linux&lt;br&gt;
&lt;br&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  2.1 - Checando a nossa versão do Windows
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Por que checar a versão:&lt;/strong&gt; É importante checar a versão do Windows antes de instalar o WSL 2 (Windows Subsystem for Linux 2) porque nem todas as versões do Windows suportam o WSL 2 ou suas funções mais recentes.&lt;/p&gt;

&lt;p&gt;O WSL 2 requer recursos específicos do sistema operacional, como o subsistema de máquina virtual (Virtual Machine Platform), que só está presente a partir do Windows 10 ( versão 1903 - build 18362 ou superior) e do Windows 11 (em todas as versões).&lt;/p&gt;

&lt;p&gt;Para checar a versão do SO vamos pressionar: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzcw9rqizlt5oqtctdnb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzcw9rqizlt5oqtctdnb1.png" alt="'Image description'" width="411" height="141"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Na janela de execução que se abrir digite ‘winver’ e dê um ‘ok’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2oje4iadxbukay3inhlo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2oje4iadxbukay3inhlo.png" alt="'Image description'" width="475" height="287"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O Windows lhe trará a versão que está em vigor na sua máquina. &lt;/p&gt;

&lt;p&gt;Certifique-se de que é versão 10 ou alguma acima desta.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bw7lkc9rij7dyjwc0n6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9bw7lkc9rij7dyjwc0n6.png" alt="'Image description'" width="596" height="538"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2.2 - Verificando se há atualizações a serem feitas
&lt;/h3&gt;

&lt;p&gt;Antes de seguir com o processo, é importante verificar se há atualizações a fazer. Para isso:&lt;/p&gt;

&lt;p&gt;Abra o menu iniciar e vá em ‘configurações’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7z0b5vm5w4ynxugaebm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd7z0b5vm5w4ynxugaebm.png" alt="'Image description'" width="637" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vá em ‘Atualização e segurança’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhi39na2kqg0awiyykm0j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhi39na2kqg0awiyykm0j.png" alt="'Image description'" width="800" height="230"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Verifique se há alguma atualização disponível, caso exista, instale-a.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqoghogrt7w6sopopp98j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqoghogrt7w6sopopp98j.png" alt="'Image description'" width="373" height="207"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  2.3 - Ativando recursos
&lt;/h3&gt;

&lt;p&gt;Agora vamos ativar alguns recursos do Windows que serão necessários à instalação do WSL 2. Vamos acessá-los.&lt;/p&gt;

&lt;p&gt;No menu iniciar vá em ‘ativar ou desativar recursos Windows’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmw8nly86f6ntqxyxomff.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmw8nly86f6ntqxyxomff.png" alt="'Image description'" width="698" height="609"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2.3.1 - Subsistema do Windows para Linux
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;explicação:&lt;/strong&gt; É o componente principal do WSL, ele cria a camada de compatibilidade que permite rodar binários Linux (ELF64) diretamente no Windows.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Na janela de opções que irá se abrir ative o ‘Subsistema do Windows para Linux'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68o1unhh0yddjisapvey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F68o1unhh0yddjisapvey.png" alt="'Image description'" width="556" height="479"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2.3.2 - Plataforma de Máquina Virtual
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;explicação:&lt;/strong&gt; Ela fornece os recursos básicos de virtualização que o WSL 2 precisa para rodar um kernel Linux real. Ou seja, ela cria e gerencia pequenas máquinas virtuais leves, usadas pelo WSL 2 para executar o kernel Linux.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ative também a opção ‘Plataforma de Máquina Virtual’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz756nxe8xfyiqqshxwqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz756nxe8xfyiqqshxwqa.png" alt="'Image description'" width="553" height="477"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2.3.3 - Plataforma do Hipervisor do Windows
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;explicação:&lt;/strong&gt; É o conjunto de APIs que permite que o sistema operacional e aplicativos (como WSL 2 ou Docker) usem o Hyper-V — o hipervisor nativo do Windows. É interessante ativar, pois o kernel Linux do WSL 2 roda em uma VM gerenciada por esse hipervisor, que faz o isolamento entre o Windows e o Linux.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ative adicionalmente a 'Plataforma do Hipervisor do Windows'&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvwd4kd0ci4at7u0e68g6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvwd4kd0ci4at7u0e68g6.png" alt="'Image description'" width="555" height="476"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  2.3.4 - Depois de marcar todas essas opções clique em ‘ok’
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0bce0cn3znnvu4rtb3ir.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0bce0cn3znnvu4rtb3ir.png" alt="'Image description'" width="557" height="479"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  2.4 - Reiniciando a máquina para efetivar as mudanças
&lt;/h3&gt;

&lt;p&gt;Depois de feito o carregamento dos recursos selecionados anteriormente, o Windows vai pedir para reiniciar a máquina, clique em ‘reiniciar agora’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc559bkzh0fhallwz0fb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdc559bkzh0fhallwz0fb.png" alt="'Image description'" width="701" height="582"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;
  
  
  2.5 - Baixando o pacote
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;explicação&lt;/strong&gt;: Nós já ativamos os componentes: Subsistema do Windows para Linux, Plataforma de Máquina Virtual e Plataforma do Hipervisor, ou seja, habilitamos o ambiente onde o WSL 2 vai rodar. Mas, ainda falta o kernel Linux propriamente dito — ou seja,  “coração” do sistema. O Windows não vem com ele instalado por padrão, o que vamos fazer agora é baixar e instalar o pacote kernel Linux compilado pela Microsoft.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Reiniciada a nossa máquina, agora vamos ao navegador. Insira esta URL neste para baixar o WSL, posteriormente, dê um ‘Enter’:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi" rel="noopener noreferrer"&gt;https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois de baixado, vamos executá-lo. Clique no arquivo baixado.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxn193zp722nyj0eb3rxq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxn193zp722nyj0eb3rxq.png" alt="'Image description'" width="369" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E depois clique em 'Executar'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkzmfx5j4ovldgze790t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkzmfx5j4ovldgze790t.png" alt="'Image description'" width="533" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E instale o pacote.&lt;/p&gt;


&lt;h3&gt;
  
  
  2.6 - Definindo o WSL 2 como a versão padrão
&lt;/h3&gt;

&lt;p&gt;Como o WSL possui duas versões, o WSL e o WSL 2, vamos dar um comando para definir o WSL 2 como a versão padrão para todas as novas distribuições Linux que você instalar no Windows.&lt;/p&gt;

&lt;p&gt;Para definir isso, precisaremos dos 'poderes' de Administrador.&lt;/p&gt;

&lt;p&gt;Portanto, vamos abrir o terminal ‘PowerShell’ e executá-lo como 'Administrador'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7vn6bcrum323ife1txh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj7vn6bcrum323ife1txh.png" alt="'Image description'" width="721" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No terminal ‘PowerShell’ vamos digitar/colar a seguinte opção e rodá-la:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--set-default-version&lt;/span&gt; 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3 - Instalação e configuração do Ubuntu
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 - Instalação do Ubuntu
&lt;/h3&gt;

&lt;p&gt;Uma vez instalado o WSL 2, vamos finalmente poder instalar agora o Ubuntu.&lt;/p&gt;

&lt;p&gt;Para isso, vá até a ‘Microsoft Store’.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyyr8dh5jf3v04wpq3bk2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyyr8dh5jf3v04wpq3bk2.png" alt="'Image description'" width="591" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma vez nesta, vamos procurar por ‘Ubuntu’ e instalar a versão 'Ubuntu 24.04.1 LTS'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfn626suhkcqepal4noj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftfn626suhkcqepal4noj.png" alt="'Image description'" width="407" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Clique em ‘Abrir’ para confirmar se a instalação foi concluída corretamente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93nylu7qj8piredso69b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F93nylu7qj8piredso69b.png" alt="'Image description'" width="507" height="553"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 - Checando se o Ubuntu consta no Windows Terminal
&lt;/h3&gt;

&lt;p&gt;Vamos checar se o Ubuntu foi certinho para o menu de terminais do Windows Terminal.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Para isso acesse o seu Windows Terminal. &lt;/li&gt;
&lt;li&gt;Clique na setinha ao lado do ‘+’ na parte superior da janela.&lt;/li&gt;
&lt;li&gt;No menu que aparecer clique na opção ‘Ubuntu’.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Como mostrado na figura à seguir: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1x0tyif7905ae5mlrf0z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1x0tyif7905ae5mlrf0z.png" alt="'Image description'" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Assim que abrir o terminal no Ubuntu ele vai mostrar essa mensagem na tela:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd8ybqo01o49xev70abz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fyd8ybqo01o49xev70abz.png" alt="'Image description'" width="800" height="57"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Aguarde uns segundinhos até ele terminar de instalar.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 - Atribuindo Usuário e Senha ao Ubuntu
&lt;/h3&gt;

&lt;p&gt;Depois disso ele vai pedir para você atribuir um nome para o novo usuário UNIX em:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Enter new UNIX username: 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insira o nome de usuário desejado.&lt;/p&gt;

&lt;p&gt;E vai pedir uma senha - e uma repetição de senha - a esse novo usuário em:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;New password:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e em&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Retype new password:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso ele vai terminar de configurar o Ubuntu.&lt;/p&gt;

&lt;p&gt;A tela vai ficar mais ou menos assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjo5slfgn5v23ayvliswl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjo5slfgn5v23ayvliswl.png" alt="'Image description'" width="510" height="399"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3.4 - Confirmando se as distros estão utilizando o WSL 2
&lt;/h3&gt;

&lt;p&gt;Vá até o PowerShell, digite o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wsl &lt;span class="nt"&gt;--list&lt;/span&gt; &lt;span class="nt"&gt;--verbose&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O terminal vai mostrar algo assim - caso o WSL que está em uso seja o 2 - na coluna ‘Version’, nesta estará o número 2:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wba6wjuv39rhjmwuu46.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wba6wjuv39rhjmwuu46.png" alt="'Image description'" width="408" height="53"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4 - APRENDENDO OS COMANDOS BÁSICOS NO TERMINAL DO UBUNTU
&lt;/h3&gt;

&lt;p&gt;Alguns comandos são essenciais para uma boa navegação em terminais do Ubuntu. Aqui traremos alguns, vale a pena revisar:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;pwd           — Exibe o caminho completo da pasta onde você está.&lt;/li&gt;
&lt;li&gt;ls            — Lista arquivos e pastas.&lt;/li&gt;
&lt;li&gt;cd Documentos - Entra na pasta Documentos.&lt;/li&gt;
&lt;li&gt;cd ..         - volta uma pasta.&lt;/li&gt;
&lt;li&gt;cd ~          - volta para o diretório pessoal.(home)&lt;/li&gt;
&lt;li&gt;mkdir projetos — Cria uma nova pasta.&lt;/li&gt;
&lt;li&gt;rm -r pasta    - apaga uma pasta e seu conteúdo.&lt;/li&gt;
&lt;li&gt;cp arquivo.txt backup.txt  - copia um arquivo.&lt;/li&gt;
&lt;li&gt;cp -r pasta1 pasta2       - copia uma pasta com tudo dentro.&lt;/li&gt;
&lt;li&gt;cat arquivo.txt - — Exibe o conteúdo de um arquivo.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;O link para a videoaula é esse: &lt;/p&gt;

&lt;h3&gt;
  
  
  5 - COMANDOS ESSENCIAIS ANTES DAS INSTALAÇÕES
&lt;/h3&gt;

&lt;p&gt;Se você acabou de instalar o Ubuntu via WSL 2 ou precisa instalar um novo programa, é bom começar com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E depois, se quiser aplicar as atualizações de fato dando um:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;explicação&lt;/strong&gt;: Porque dar esses comandos antes de começar as instalações? Rodar ambos os comandos antes de instalar qualquer pacote no WSL 2 é uma prática essencial por motivos técnicos e de segurança. Quando você instala o Ubuntu no WSL 2, ele vem com uma lista de pacotes desatualizada.&lt;br&gt;
Se você não rodar sudo apt update, o sistema pode: não encontrar o Git (ou outro pacote), instalar versões antigas, ou gerar erros de dependência ao instalar.&lt;br&gt;
Já o ‘sudo apt upgrade’ vai atualizar os pacotes que já estão no sistema, isso é importante para: corrigir bugs e falhas de segurança, garantir que tudo esteja compatível com os pacotes novos que serão instalados (como o Git).&lt;/p&gt;
&lt;/blockquote&gt;



&lt;h3&gt;
  
  
  6 - INSTALAÇÃO DO GIT
&lt;/h3&gt;

&lt;p&gt;Vá ao Windows Terminal (no Ubuntu) e dê o comando para atualizar a lista de pacotes disponíveis nos repositórios.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois dê o comando para instalar as atualizações disponíveis dos pacotes listados&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se ele perguntar se quer continuar a instalação aperte ‘y’ para ‘yes’ se ele perguntar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Do you want to &lt;span class="k"&gt;continue&lt;/span&gt;? &lt;span class="o"&gt;[&lt;/span&gt;Y/n]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ok, agora que tomamos medidas seguras, vamos instalar o GIT de fato.&lt;/p&gt;

&lt;p&gt;Para isso utilizaremos o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Para checar se o GIT foi de fato instalado podemos dar os seguintes comandos (de mesma função):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ou&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pronto, agora já temos o Git instalado!&lt;/p&gt;



&lt;h3&gt;
  
  
  7 - INSTALAÇÃO DO RUBY
&lt;/h3&gt;

&lt;p&gt;Nós vamos instalar a nossa primeira versão do Ruby e todas as demais versões que quisermos utilizar depois de uma mesma maneira: Ruby Version Manager(RVM), ou seja, via Gerenciador de Versões do Ruby. Usa-se essa forma pois é bem mais eficiente do que as demais e mais fácil de gerenciar também.&lt;/p&gt;

&lt;p&gt;Para isso, vamos lá:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Abra o Windows Terminal.&lt;/li&gt;
&lt;li&gt;Dê os dois comandos de praxe que sempre damos antes de instalar qualquer coisa:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;e&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Vamos ao &lt;a href="https://rvm.io/rvm/install" rel="noopener noreferrer"&gt;site oficial&lt;/a&gt; do RVM (Ruby Version Manager), na parte de instalação.&lt;/li&gt;
&lt;li&gt;Copie a chave GPG que estiver lá e cole no seu terminal.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fil4wq5wfz4lmmvj5iky4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fil4wq5wfz4lmmvj5iky4.png" alt="'Image description'" width="800" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A do nosso caso aqui é essa:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gpg &lt;span class="nt"&gt;--keyserver&lt;/span&gt; keyserver.ubuntu.com &lt;span class="nt"&gt;--recv-keys&lt;/span&gt; 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Verifique que ele importou as chaves.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lx20hc0z22qwsqt7ja4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5lx20hc0z22qwsqt7ja4.png" alt="'Image description'" width="800" height="145"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Importadas com sucesso. Vamos ao próximo passo.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Retorne ao site do RVM, copie o comando à seguir e cole-o no terminal:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnuurl53vwznbiwptpokf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnuurl53vwznbiwptpokf.png" alt="'Image description'" width="800" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No nosso exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="se"&gt;\c&lt;/span&gt;url &lt;span class="nt"&gt;-sSL&lt;/span&gt; https://get.rvm.io | bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se tudo der certo, vai aparecer uma tela assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql09u6jvs777bbbtkf47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fql09u6jvs777bbbtkf47.png" alt="'Image description'" width="800" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Feche o Windows Terminal. Posteriormente a isso, abra-o novamente para tirar a prova real se a instalação do RVM deu certo ou não. Dê um:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rvm &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se a instalação tiver sido bem sucedida vai aparecer isso aqui:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7rnjqai9jghd4y0yttc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7rnjqai9jghd4y0yttc.png" alt="'Image description'" width="800" height="94"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Uma vez instalado o RVM podemos baixar a nossa primeira versão do Ruby. Vá ao &lt;a href="https://www.ruby-lang.org/en/downloads/" rel="noopener noreferrer"&gt;site oficial&lt;/a&gt; da linguagem e veja qual é a &lt;em&gt;current version&lt;/em&gt; do momento.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pegue a numeração da &lt;em&gt;current version&lt;/em&gt; e aplique o seguinte comando no terminal (contendo essa versão): &lt;br&gt;
'rvm install '.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Exemplo prático, eu quero a versão 3.4.7:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; rvm &lt;span class="nb"&gt;install &lt;/span&gt;3.4.7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O processo de instalação será exibido no terminal.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64ms7mmzjmwduowm9uca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F64ms7mmzjmwduowm9uca.png" alt="'Image description'" width="800" height="401"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Dê um ‘rvm list’ para checar se a versão do Ruby que queremos foi instalada de fato.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapzi6bl40own30p7lxv0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapzi6bl40own30p7lxv0.png" alt="'Image description'" width="622" height="207"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;h3&gt;
  
  
  8 - INSTALAÇÃO DO POSTGRESQL
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;No Windows Terminal, digite:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;postgresql postgresql-contrib libpq-dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Esse comando serve para instalar o PostgreSQL, os módulos adicionais (postgresql-contrib) e a biblioteca de desenvolvimento (libpq-dev).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Durante a instalação ele pede a senha do seu usuário do Ubuntu, bem como pergunta se você deseja seguir com o processo de instalação. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwf0e7k923bxy15m4e50.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwf0e7k923bxy15m4e50.png" alt="'Image description'" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Vamos checar a versão do PostgreSQL que foi instalada.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para isso utilizamos o seguinte comando no terminal.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;psql &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Apesar de instalado o PostgreSQL ainda não está funcionando, para que ele funcione precisamos startá-lo. &lt;br&gt;
Mas antes disso precisamos setar uma nova senha para o SGBD.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Alterando a senha do usuário postgres no sistema (usuário padrão do PostgreSQL).&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Dê o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;passwd postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Insira a senha que deseja e depois repita-a e ele dará uma mensagem de sucesso.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Startando o PostgreSQL &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Para isso vamos dar o comando para startar o serviço:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;service postgresql start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E depois vamos checar se o serviço/banco está ativo com um:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;service postgresql status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5gkjdhtfb51w176t6mv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg5gkjdhtfb51w176t6mv.png" alt="'Image description'" width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Entrando no PostgreSQL com o usuário postgres&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Podemos acessar o console interativo do PostgreSQL (psql) como usuário postgres dando o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt; postgres psql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Esse comando vai abrir o terminal, para trabalharmos com o PostgreSQL.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcko5pp3xjt2kghhz99bc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcko5pp3xjt2kghhz99bc.png" alt="'Image description'" width="649" height="141"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O banco já está funcionando e a instalação do PostgreSQL já foi concluída!&lt;/p&gt;



&lt;h3&gt;
  
  
  9 - INSTALAÇÃO DO VSCODE
&lt;/h3&gt;

&lt;p&gt;Se você já tiver o VSCode instalado na sua máquina, no seu Windows mesmo, não há a necessidade de baixar uma nova versão no WSL 2. Vamos utilizar o VSCode baixado no Windows mesmo.&lt;/p&gt;

&lt;p&gt;Caso ainda não possua o editor de código:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Acesse o &lt;a href="https://code.visualstudio.com/download" rel="noopener noreferrer"&gt;site oficial&lt;/a&gt; para baixar.&lt;/li&gt;
&lt;li&gt;Veja esse &lt;a href="https://www.youtube.com/watch?v=v6RbyUk0DhM" rel="noopener noreferrer"&gt;tutorial&lt;/a&gt;rápido para instalação.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  10 - CONFIGURANDO EXTENSÃO NO VSCODE
&lt;/h3&gt;

&lt;p&gt;Abra o VSCode que foi instalado.&lt;br&gt;
Uma vez neste clique neste botão para acessar as extensões:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dxn0elzctlh05k1h5k4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8dxn0elzctlh05k1h5k4.png" alt="'Image description'" width="534" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Digite ‘WSL’ e instale a extensão indicada: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmmjpm8taf2e40y1vggc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmmjpm8taf2e40y1vggc.png" alt="'Image description'" width="436" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Há também outras 2 sugestões de extensões para quem trabalha com o VSCode e com o Ruby/Rails:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A Material Icon Theme - Para que o seu projeto, quando você abre no VSCode saia com aqueles ícones todos bonitinhos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;E essa aqui - Que muda as cores gerais do seu VScode. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihdq707hemq52c5uvhow.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fihdq707hemq52c5uvhow.png" alt="'Image description'" width="691" height="263"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  11 - INSTALAÇÃO DO RAILS
&lt;/h3&gt;

&lt;p&gt;Você pode instalar o Rails de maneira global no seu sistema. Mas não é uma prática recomendada. o ideal é instalar a  versão do Rails especificamente na pasta de cada projeto.&lt;/p&gt;

&lt;p&gt;Portanto, vamos começar criando uma pasta para os nossos projetos.&lt;/p&gt;
&lt;h4&gt;
  
  
  11.1 - Consultando o acesso as pastas em diferentes sistemas
&lt;/h4&gt;

&lt;p&gt;Para evitar problemas de desempenho e de compatibilidade as pastas do nosso projeto NÃO serão criadas no Windows, ou seja, no caminho (/mnt/c/).&lt;/p&gt;

&lt;p&gt;Vamos ao Windows Terminal para acessar a pasta do usuário no Ubuntu.&lt;/p&gt;

&lt;p&gt;Para consultar essa pasta vamos dar o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;pwd&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Nota&lt;/strong&gt;: Esse comando vem de print working directory e serve para mostrar a sua pasta atual e o caminho para ela. Ou seja, o comando localiza aonde você está dentro da hierarquia de pastas.&lt;/p&gt;

&lt;p&gt;Por exemplo, ao dar esse comando no Ubuntu vamos ter:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4w55eovkqnzca374utd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo4w55eovkqnzca374utd.png" alt="'Image description'" width="424" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Já no Windows esse caminho estará bem aqui:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2520g9vbmqjlizica0lq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2520g9vbmqjlizica0lq.png" alt="'Image description'" width="800" height="604"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  11.2 - Criando a pasta para os seus projetos no Ubuntu
&lt;/h4&gt;

&lt;p&gt;Para criar a pasta, escolha e navegue até a pasta mãe - onde deseja deixar os seus projetos Rails - e dê o comando 'mkdir + nome_da_pasta_do_seu_projeto'.&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 shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;Projetos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  11.3 - Mude para dentro da pasta que foi criada
&lt;/h4&gt;

&lt;p&gt;Para isso utilize o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;Projetos
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou &lt;em&gt;'cd nomedasuapasta'&lt;/em&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  11.4 - Instalando o Rails na pasta de Projetos
&lt;/h4&gt;

&lt;p&gt;O Rails além de ser um framework é uma Gem, logo é instalado como uma. Os pacotes no Ruby são Gems.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rubygems.org/gems/rails/versions" rel="noopener noreferrer"&gt;Aqui&lt;/a&gt; você pode acompanhar todas as versões do Rails.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se quiser instalar uma versão mais específica do Rails, dê este comando no terminal:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gem &lt;span class="nb"&gt;install &lt;/span&gt;rails &lt;span class="nt"&gt;-v&lt;/span&gt; 8.0.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Se eu quiser instalar a versão mais recente e atualizada do Rails eu dou o comando:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;gem &lt;span class="nb"&gt;install &lt;/span&gt;rails
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A instalação do Rails vai gerar algo semelhante a isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs06t7gqhf0ubymao70py.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs06t7gqhf0ubymao70py.png" alt="'Image description'" width="737" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  11.5 - Checando se o Rails foi instalado com sucesso
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails &lt;span class="nt"&gt;-v&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dê um comando para consultar a versão do framework Rails.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuh3k5zotb20h21chq3ww.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuh3k5zotb20h21chq3ww.png" alt="'Image description'" width="593" height="196"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  12 - CRIANDO UM PROJETO NO RAILS NO VSCODE
&lt;/h3&gt;

&lt;p&gt;Para criar um projeto no Rails dê o comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails new nome_do_seu_projeto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Você também pode deixar algumas coisas  pré-definidas, como por exemplo o SGBD que será utilizado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails new meu_projeto &lt;span class="nt"&gt;--database&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgresql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou deixar pré-definido se vai utilizar o Tailwind no projeto ou não:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails new meu_projeto &lt;span class="nt"&gt;-d&lt;/span&gt; postgresql &lt;span class="nt"&gt;-c&lt;/span&gt; tailwind
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vamos gerar o nosso próprio projeto aqui:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;rails new teste &lt;span class="nt"&gt;--database&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;postgresql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Aqui o projeto sendo criado:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbxjxz6jme11a5k3v6mtc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbxjxz6jme11a5k3v6mtc.png" alt="'Image description'" width="800" height="242"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Uma vez criado o projeto, se mude para dentro da pasta deste utilizando um 'cd teste'.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6zcuuz70xops7lg185h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6zcuuz70xops7lg185h.png" alt="'Image description'" width="605" height="510"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Posteriormente, abra o seu projeto com o Visual Studio Code e vá mexer nele. Edite-o como quiser. Para isso se utilize do comando: 'code .'&lt;/p&gt;

&lt;p&gt;Repare que ele vai - na primeira vez que o VSCode abre ali - instalar o editor de código para o Linux x64:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4z1i340oafvvtz9kwcjl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4z1i340oafvvtz9kwcjl.png" alt="'Image description'" width="800" height="118"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Com isso, fico por aqui. Espero que tenham gostado da explicação sobre como instalar o setup para desenvolvimento em Ruby/Rails. Tentei deixar o mais detalhado possível, para evitar que as pessoas -  mesmo as mais iniciantes em programação - consigam ter um bom entendimento desse processo de instalação da linguagem e dos demais componentes utilizados no desenvolvimento web com a linguagem. &lt;/p&gt;

&lt;p&gt;Vejo vocês na próxima.&lt;/p&gt;

&lt;p&gt;Tchau tchau.&lt;/p&gt;

</description>
      <category>ruby</category>
      <category>rails</category>
      <category>wsl2</category>
      <category>windows</category>
    </item>
  </channel>
</rss>
