<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: gustavo marciano</title>
    <description>The latest articles on DEV Community by gustavo marciano (@gustavo_marciano).</description>
    <link>https://dev.to/gustavo_marciano</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%2F3013351%2Fb3ab2543-f46f-466f-a9d7-774df2c74491.jpg</url>
      <title>DEV Community: gustavo marciano</title>
      <link>https://dev.to/gustavo_marciano</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gustavo_marciano"/>
    <language>en</language>
    <item>
      <title>Ambiente de desenvolvimento rails e postgres com dev containers</title>
      <dc:creator>gustavo marciano</dc:creator>
      <pubDate>Fri, 04 Apr 2025 11:59:43 +0000</pubDate>
      <link>https://dev.to/videosdeti/ambiente-de-desenvolvimento-rails-e-postgres-com-dev-containers-4k3e</link>
      <guid>https://dev.to/videosdeti/ambiente-de-desenvolvimento-rails-e-postgres-com-dev-containers-4k3e</guid>
      <description>&lt;h2&gt;
  
  
  Requisitos Iniciais
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Windows
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;WSL: &lt;a href="https://learn.microsoft.com/pt-br/windows/wsl/install" rel="noopener noreferrer"&gt;https://learn.microsoft.com/pt-br/windows/wsl/install&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Docker Desktop: &lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;Docker Desktop&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Docker Settings&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%2F7dh70w8vascfsih88lod.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%2F7dh70w8vascfsih88lod.png" alt="Imagem da pagina settings do docker desktop mostrando a aba resources onde Enable integration esta ativado junto a distro Ubunto " width="800" height="339"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vscode &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;https://code.visualstudio.com/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;Mantenha todo o seu projeto no WSL para evitar lentidão.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Linux
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Docker &lt;a href="https://www.docker.com/products/docker-desktop/" rel="noopener noreferrer"&gt;Docker Desktop&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Vscode &lt;a href="https://code.visualstudio.com/" rel="noopener noreferrer"&gt;https://code.visualstudio.com/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  Iniciando o Setup
&lt;/h2&gt;

&lt;p&gt;1-Crie o arquivo com o nome do projeto.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir meu-app-rails
cd meu-app-rails
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2-Baixe | Abra no vscode.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;code .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3-Com o vscode aberto na pasta do projeto vá na aba extensões e verifique se a extensão dev containers já está habilitada, se não estiver procure no por dev containers e faça a 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%2Fvc6v0qhldj9ztodskraj.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%2Fvc6v0qhldj9ztodskraj.png" alt="image do marketplace do vscode mostrando a pesquisa dev containers com o resultado sendo a extensão da microsoft " width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4-Com a extensão no Vscode aperte o botão &lt;strong&gt;F1&lt;/strong&gt; do seu teclado, um menu de opções do dev container aparecerá, escolha a opção &lt;strong&gt;"Dev containers: Open Folder in Container..."&lt;/strong&gt;.&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%2F601kao6pxs6sm45as3r6.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%2F601kao6pxs6sm45as3r6.png" alt="Imagem com o menu do dev containers contendo a opção dev containers: open folder in container" width="744" height="212"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;5-Confirme o arquivo que você abrirá no container.&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%2Fpxtnq9xighle1bobhi7u.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%2Fpxtnq9xighle1bobhi7u.png" alt="menu de confirmação com o botão ok" width="604" height="101"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;6-No próximo menu escreva “ruby” a extensão te retorna algumas opções de containers com Ruby, escolha opção Ruby on Rails &amp;amp; Postgres e em seguida escolha a versão do Ruby (recomendado sempre escolher a primeira/default).&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%2Fhdy3cwmuvewwz7kpqosv.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%2Fhdy3cwmuvewwz7kpqosv.png" alt="Imagem com o menu do dev containers contendo a opção Ruby on Rails e Postgresql" width="635" height="257"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;7-Agora no menu de features vamos escolher algumas ferramentas importantes para o desenvolvimento. Nesse menu vamos procurar por Redis Server,Node e github-cli.&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%2Fvaq7y74hnnuhrdbd303j.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%2Fvaq7y74hnnuhrdbd303j.png" alt="Imagem mostrando a feature Redis Server" width="604" height="162"&gt;&lt;/a&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%2F5edbrlfhwndap9h15d3k.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%2F5edbrlfhwndap9h15d3k.png" alt="Imagem mostrando a feature Node.js via nvm,yan e pnpm" width="590" height="163"&gt;&lt;/a&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%2Fec6znx78asldxebcfxds.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%2Fec6znx78asldxebcfxds.png" alt="Imagem mostrando a feature Github-cli" width="618" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois dessa etapa a extensão vai mostrar alguns prompts de versões das features, apenas escolha default ou latest e prossiga com a instalação.&lt;br&gt;
Após isso um novo container será criado.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Importante!&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Isto pode demorar um &lt;strong&gt;bom&lt;/strong&gt; tempo, o Docker vai baixar as imagens e fazer todo o setup ,então não estranhe se demorar muito.&lt;/p&gt;

&lt;p&gt;8-Após o término do setup é recomendado testar se tudo está funcionando corretamente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ruby -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;node -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;redis-cli ping
&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%2Fehqhwj04o2v56j53xbay.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%2Fehqhwj04o2v56j53xbay.png" alt="Imagem com o retorno dos comandos sendo redis: pong, Ruby: ruby mais a versão 3.3, rails 7.1.3, node v 20.12 e yarn 1.22" width="472" height="213"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Se os comandos tiverem retorno o seu setup já está pronto para o desenvolvimento.&lt;/p&gt;

&lt;p&gt;9-Inicie um novo projeto com:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails new . -d postgresql
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Usar o “.” após o “new” faz com que o seu projeto seja criado na pasta atual e com o nome da mesma.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;10-Após isso adicione o host, user e password no config/database.yml.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;development:
  &amp;lt;&amp;lt;: *default
  database: pr_test_development
  host: db
  username: postgres
  password: postgres

test:
  &amp;lt;&amp;lt;: *default
  database: pr_test_test
  host: db
  username: postgres
  password: postgres
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;11-agora é só iniciar a sua aplicação rails e fazer a migration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;rails s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Software de Terceiros
&lt;/h2&gt;

&lt;p&gt;Algumas ferramentas do Rails ,como &lt;strong&gt;Active Storage&lt;/strong&gt; , necessitam que software de terceiros sejam instalados para o seu funcionamento. Ah forma correta de instalar essas ferramentas é o usando o DockerFile localizado dentro da pasta .devcontainer.&lt;/p&gt;

&lt;p&gt;Dentro do arquivo descomente a linhas:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update &amp;amp;&amp;amp; export DEBIAN_FRONTEND=noninteractive \
#     &amp;amp;&amp;amp; apt-get -y install --no-install-recommends &amp;lt;your-package-list-here&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Exemplo, linha modificada para instalar o postgresql-client ,libvips e imagemagick:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# [Optional] Uncomment this section to install additional OS packages.
RUN apt-get update -qq &amp;amp;&amp;amp; \
    apt-get install --no-install-recommends -y curl libvips imagemagick postgresql-client &amp;amp;&amp;amp; \
    rm -rf /var/lib/apt/lists /var/cache/apt/archives

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Extensões do Vscode
&lt;/h2&gt;

&lt;p&gt;Para adicionar extensões e temas ao vscode pesquise pela extensão que deseja acionar e na pagina da extensão vá no símbolo de engrenagem e escolha a opção &lt;strong&gt;"Add to devcontainer.json"&lt;/strong&gt; e faça o Rebuild do container.Agora todas as vezes que iniciar o container terá sempre as extensões que você escolheu.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gems e comandos adicionais
&lt;/h2&gt;

&lt;p&gt;Às vezes precisamos de Gems no ambiente de desenvolvimento ,mas não da aplicação para isso existe uma maneira fácil de fazer usando containers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Vá em devcontainers.json&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Descomente a linha com  "postCreateCommand":&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Agora adicione as gems e os comandos que você quiser ao seu ambiente&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"postCreateCommand": "gem install solargraph &amp;amp;&amp;amp; bundle",
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Recomendo adicionar sempre o comando budle em todos os containers para que o container já faça o bundle install automaticamente ao iniciar.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fim&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>rails</category>
      <category>ruby</category>
    </item>
  </channel>
</rss>
