<?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: Lucas Cuerci Soares (Cuerci)</title>
    <description>The latest articles on Forem by Lucas Cuerci Soares (Cuerci) (@cuerci).</description>
    <link>https://forem.com/cuerci</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%2F2449681%2F531c6e53-82cd-4896-8ade-a1003ad9eae0.jpeg</url>
      <title>Forem: Lucas Cuerci Soares (Cuerci)</title>
      <link>https://forem.com/cuerci</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/cuerci"/>
    <language>en</language>
    <item>
      <title>Variáveis de Ambiente no ruby on rails</title>
      <dc:creator>Lucas Cuerci Soares (Cuerci)</dc:creator>
      <pubDate>Mon, 16 Dec 2024 15:26:24 +0000</pubDate>
      <link>https://forem.com/cuerci/variaveis-de-ambiente-no-ruby-on-rails-49n2</link>
      <guid>https://forem.com/cuerci/variaveis-de-ambiente-no-ruby-on-rails-49n2</guid>
      <description>&lt;p&gt;Uma variável de ambiente é um valor configurável que seu aplicativo pode usar em diferentes ambientes (como desenvolvimento, teste e produção) sem que esses valores sejam explicitamente definidos no código.&lt;/p&gt;

&lt;p&gt;Elas são ideais para armazenar informações sensíveis ou que podem variar entre ambientes, como credenciais de API, configurações de banco de dados, chaves secretas e URLs de serviços externos.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como armazenar variáveis de ambiente em um app Rails
&lt;/h2&gt;

&lt;p&gt;Em resumo existem 3 maneiras pra fazer isso:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. configuração direta no sistema operacional&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Esse método é o mais simples de fazer, além de ser muito seguro para ambientes de produção pois evita o armazenamento de dados sensíveis no repositório&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No terminal , defina uma variável com:&lt;br&gt;
&lt;code&gt;export SECRET_KEY=uma_chave_secreta&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Então sua aplicação poderá acessar essa variável com:&lt;br&gt;
&lt;code&gt;ENV["SECRET_KEY"]&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Caso queira saber quais variáveis de ambiente já existem no seu sistema, utilize o comando:&lt;br&gt;
&lt;code&gt;env&lt;/code&gt; ou &lt;code&gt;printenv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Usando Credenciais Encriptadas (Rails Encrypted Credentials)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O próprio Rails oferece uma camada de segurança adicional para armazenar variáveis sensíveis através de uma &lt;code&gt;master.key&lt;/code&gt; visivel em config/master.key e por padrão já é incluída no arquivo &lt;code&gt;.gitignore&lt;/code&gt; evitando risco da chave ser acidentalmente versionada no Git e exposta publicamente.&lt;/p&gt;

&lt;p&gt;execute o comando:&lt;br&gt;
&lt;code&gt;EDITOR="code" rails credentials:edit&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Assim o VScode irá abrir o arquivo &lt;code&gt;credentials.yml.enc&lt;/code&gt; permitindo criar e editar suas variáveis, inicialmente com uma aparência bem parecida com essa:&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%2Ffyn5462yiqep63933kqa.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%2Ffyn5462yiqep63933kqa.png" alt="imagem padrão rails credentials" width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Uma possibilidade interessante é que dessa maneira é possível agrupar variáveis, por exemplo:&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%2Fjyiak78egcsgnm65cvsx.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%2Fjyiak78egcsgnm65cvsx.png" alt="google_default" width="800" height="203"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sendo possível acessar os valores agrupados através do comando:&lt;br&gt;
&lt;code&gt;Rails.application.credentials.google[:client_id]&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;obs: sempre dê dois espaços manuais(tecla espaço) invés de tabulações(Tecla tab), caso contrario é possível q o sistema não consiga acessar suas variáveis&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Usando um arquivo &lt;code&gt;.env&lt;/code&gt; com a gem Dotenv:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A gem &lt;a href="https://github.com/bkeepers/dotenv" rel="noopener noreferrer"&gt;Dotenv&lt;/a&gt; permite que você crie um arquivo &lt;code&gt;.env&lt;/code&gt; na raiz do projeto onde as variáveis são armazenadas seguindo o msm padrão em formato &lt;code&gt;CHAVE=VALOR&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Como configurar&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Adicione &lt;code&gt;gem 'dotenv-rails'&lt;/code&gt; ao seu &lt;code&gt;Gemfile&lt;/code&gt; e instale as dependências &lt;code&gt;bundle install&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Em seguida, crie um arquivo &lt;code&gt;.env&lt;/code&gt; na raiz do seu projeto e adicione suas variáveis:&lt;br&gt;
&lt;code&gt;SECRET_KEY_BASE=uma_chave_secreta&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;não se esqueça de adicionar o arquivo &lt;code&gt;.env&lt;/code&gt; ao &lt;code&gt;.gitignore&lt;/code&gt; para evitar que suas variáveis ​​de ambiente sensíveis sejam&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Verifique se suas variáveis de ambiente estão configuradas corretamente acessando no rails c: &lt;code&gt;ENV['SECRET_KEY_BASE']&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;obs: O uso de um arquivo .env com a gem Dotenv é prático e ideal para ambientes de desenvolvimento e testes, mas não deve ser usado em produção.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusão
&lt;/h2&gt;

&lt;p&gt;Escolher a abordagem certa para gerenciar variáveis de ambiente depende das necessidades do seu projeto e do seu ambiente de desenvolvimento. &lt;/p&gt;

&lt;p&gt;Cada método tem suas vantagens e limitações, e a escolha certa pode fazer toda a diferença na segurança e na organização do seu código. &lt;/p&gt;

&lt;p&gt;O mais importante é garantir que os dados sensíveis estejam sempre protegidos, evitando o risco de exposição acidental, independentemente da abordagem escolhida, adotar boas práticas de segurança desde o início é essencial para qualquer projeto.&lt;/p&gt;

</description>
      <category>rails</category>
      <category>ruby</category>
      <category>tutorial</category>
      <category>backend</category>
    </item>
  </channel>
</rss>
