Ambiente de desenvolvimento rails e postgres com dev containers
Requisitos Iniciais Windows WSL: https://learn.microsoft.com/pt-br/windows/wsl/install Docker Desktop: Docker Desktop Docker Settings Vscode https://code.visualstudio.com/ Mantenha todo o seu projeto no WSL para evitar lentidão. Linux Docker Docker Desktop Vscode https://code.visualstudio.com/ Iniciando o Setup 1-Crie o arquivo com o nome do projeto. mkdir meu-app-rails cd meu-app-rails 2-Baixe | Abra no vscode. code . 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. 4-Com a extensão no Vscode aperte o botão F1 do seu teclado, um menu de opções do dev container aparecerá, escolha a opção "Dev containers: Open Folder in Container...". 5-Confirme o arquivo que você abrirá no container. 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 & Postgres e em seguida escolha a versão do Ruby (recomendado sempre escolher a primeira/default). 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. 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. Após isso um novo container será criado. Importante! Isto pode demorar um bom tempo, o Docker vai baixar as imagens e fazer todo o setup ,então não estranhe se demorar muito. 8-Após o término do setup é recomendado testar se tudo está funcionando corretamente. ruby -v rails -v node -v redis-cli ping Se os comandos tiverem retorno o seu setup já está pronto para o desenvolvimento. 9-Inicie um novo projeto com: rails new . -d postgresql Usar o “.” após o “new” faz com que o seu projeto seja criado na pasta atual e com o nome da mesma. 10-Após isso adicione o host, user e password no config/database.yml. development:

Requisitos Iniciais
Windows
Docker Desktop: Docker Desktop
Mantenha todo o seu projeto no WSL para evitar lentidão.
Linux
Docker Docker Desktop
Iniciando o Setup
1-Crie o arquivo com o nome do projeto.
mkdir meu-app-rails
cd meu-app-rails
2-Baixe | Abra no vscode.
code .
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.
4-Com a extensão no Vscode aperte o botão F1 do seu teclado, um menu de opções do dev container aparecerá, escolha a opção "Dev containers: Open Folder in Container...".
5-Confirme o arquivo que você abrirá no container.
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 & Postgres e em seguida escolha a versão do Ruby (recomendado sempre escolher a primeira/default).
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.
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.
Após isso um novo container será criado.
Importante!
Isto pode demorar um bom tempo, o Docker vai baixar as imagens e fazer todo o setup ,então não estranhe se demorar muito.
8-Após o término do setup é recomendado testar se tudo está funcionando corretamente.
ruby -v
rails -v
node -v
redis-cli ping
Se os comandos tiverem retorno o seu setup já está pronto para o desenvolvimento.
9-Inicie um novo projeto com:
rails new . -d postgresql
Usar o “.” após o “new” faz com que o seu projeto seja criado na pasta atual e com o nome da mesma.
10-Após isso adicione o host, user e password no config/database.yml.
development:
<<: *default
database: pr_test_development
host: db
username: postgres
password: postgres
test:
<<: *default
database: pr_test_test
host: db
username: postgres
password: postgres
11-agora é só iniciar a sua aplicação rails e fazer a migration:
rails s
Software de Terceiros
Algumas ferramentas do Rails ,como Active Storage , 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.
Dentro do arquivo descomente a linhas:
# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends
Exemplo, linha modificada para instalar o postgresql-client ,libvips e imagemagick:
# [Optional] Uncomment this section to install additional OS packages.
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y curl libvips imagemagick postgresql-client && \
rm -rf /var/lib/apt/lists /var/cache/apt/archives
Extensões do Vscode
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 "Add to devcontainer.json" e faça o Rebuild do container.Agora todas as vezes que iniciar o container terá sempre as extensões que você escolheu.
Gems e comandos adicionais
À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.
Vá em devcontainers.json
Descomente a linha com "postCreateCommand":
Agora adicione as gems e os comandos que você quiser ao seu ambiente
Exemplo:
"postCreateCommand": "gem install solargraph && bundle",
Recomendo adicionar sempre o comando budle em todos os containers para que o container já faça o bundle install automaticamente ao iniciar.
Fim