DEV Community

Cover image for Meu ambiente para desenvolvimento web com WSL2 - Ruby on Rails (PostgreSQL)
Jony Hayama
Jony Hayama

Posted on • Updated on

Meu ambiente para desenvolvimento web com WSL2 - Ruby on Rails (PostgreSQL)

Esse post é o segundo de uma série de 4

  1. Geral
  2. Ruby on Rails (PostgreSQL)
  3. Javascript (AdonisJS + React + VueJS)
  4. Apache + MySQL + PHP (WordPress)

Na empresa onde trabalho, utilizamos Ruby on Rails com PostgreSQL para quase todos os projetos, é a nossa “go to language”. 

PostgreSQL

Antes de mais nada, gosto de instalar o banco de dados. Estranhamente (ou não), durante a escrita deste post encontrei um erro ao fazer a instalação do banco que (até hoje) não consegui descobrir o motivo exato. 

Depois de instalado tudo parece ok, entretanto, não é possível conectar-se ao banco. Sempre ocorre o erro de que o servidor não foi iniciado. Tentei fazer diversos ajustes no postgresql.conf e no pg_hba.conf, mas o fato é que há algum problema na instalação do PostgreSQL no WSL2. É necessário, portanto, reverter ao WSL1 para fazer a instalação. Ao final, pode voltar ao WSL2 que tudo funcionará perfeitamente.

Caso não se lembre, o comando a ser executado no PowerShell é:

wsl --set-version <Distro> <Version>
Enter fullscreen mode Exit fullscreen mode

Agora, abra seu WSL e rode os comandos abaixo:

sudo apt update  
sudo apt install postgresql postgresql-contrib libpq-dev
Enter fullscreen mode Exit fullscreen mode

Via de regra, sempre crio um usuário de banco “superuser” com o mesmo nome do meu usuário Linux. Para isso, basta mudarmos para a conta postgres:

sudo -i -u postgres
Enter fullscreen mode Exit fullscreen mode

e usar o comando abaixo para criar o usuário:

createuser --interactive
Enter fullscreen mode Exit fullscreen mode

O próprio script irá te solicitar que preencha os dados do novo usuário. Como disse antes, sempre crio um usuário que possui o mesmo nome do meu usuário linux. Caso não seja solicitada a senha durante a criação do usuário, pasta acessar o psql e executar o comando abaixo substituindo [nome-do-usuario] pelo nome de usuário que você acabou de criar.

\password [nome-do-usuario]
Enter fullscreen mode Exit fullscreen mode

Se foi necessário criar uma senha utilizando o comando acima, digite \q para sair do psql.

Depois de criado o nosso usuário, já não há mais necessidade de estar logado com a conta postgres, portanto pode sair utilizando o comando exit.

Por força do hábito, sempre que preciso criar um banco, utilizo o comando abaixo:

sudo -u postgres createdb [nome-do-banco]
Enter fullscreen mode Exit fullscreen mode

Há, naturalmente, diversas formas mais práticas de criar e gerenciar seus bancos de dados do que o terminal. Minha sugestão é instalar o pgAdmin. É só baixar a versão para Windows e configurar o acesso como localhost.

Uma característica do WSL é que é necessário iniciar o servidor sempre que o WSL for fechado, portanto segue o comando:

sudo service postgresql start

RVM

Para gerenciar as versões do Ruby, utilizo o RVM. Há uma versão dedicada ao Ubuntu e para instalá-la, precisamos, primeiramente instalar o software-properties-common:

sudo apt-get install software-properties-common
Enter fullscreen mode Exit fullscreen mode

Agora, precisamos adicionar o PPA e instalá-lo via apt :

sudo apt-add-repository -y ppa:rael-gc/rvmsudo apt-get updatesudo apt-get install rvm
Enter fullscreen mode Exit fullscreen mode

Por fim, para que o RVM venha sempre carregado, precisamos executar o comando abaixo:

echo 'source "/etc/profile.d/rvm.sh"' >> ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

Esse último é um pouco diferente da documentação oficial, pois utilizamos o zsh e não o bash. Caso encontre algum problema, acesse o repositório oficial: https://github.com/rvm/ubuntu_rvm

Agora você já pode rodar o comando abaixo para instalar a versão do Ruby que seu projeto utiliza:

rvm install ruby[-versao-do-ruby]
Enter fullscreen mode Exit fullscreen mode

Caso seja uma aplicação novinha em folha, basta omitir a versão e instalar a mais recente :)

Agora que temos o Ruby instalado, precisamos também instalar o bundler

gem install bundler
Enter fullscreen mode Exit fullscreen mode

Letter Opener

Se você, como eu, utiliza a gem letter_opener, você perceberá que o navegador não abre quando o e-mail é enviado. Isso pois o comando para abrir o navegador é enviado para seu WSL, portanto é necessário fazer uma configuração adicional para que o WSL encontrei seu browser. No meu caso, utilizo o Chrome, portanto, basta adicionar a seguinte linha ao seu ~/.zshrc

# Add BROWSER  
export BROWSER='/mnt/c/Program\ Files\ \\(x86\\)/Google/Chrome/Application/chrome.exe'
Enter fullscreen mode Exit fullscreen mode

Outro probleminha que encontrará é que, agora, seu navegador abre, mas o endereço do arquivo é incorreto

Ainda não descobri uma forma de fazer isso automaticamente, por hora eu simplesmente adiciono o endereço abaixo ao caminho gerado:

wsl%24/Ubuntu-20.04/
Enter fullscreen mode Exit fullscreen mode

o caminho acaba ficando algo como:

file://wsl%24/Ubuntu-20.04/home/jony/www/...
Enter fullscreen mode Exit fullscreen mode

NodeJS

Por fim, as versões mais recentes do Rails precisam do Node para funcionar. Em especial por terem substituído o Sprockets pelo Webpacker. Como eu utilizo o mesmo ambiente para desenvolver aplicações JS eu prefiro usar o NVM (que vou explicar como instalar na próxima postagem da série), mas nada impede que você instale a versão do node disponível no apt:

sudo apt install nodejs
Enter fullscreen mode Exit fullscreen mode

A partir daqui já podemos seguir com um fluxo trabalho comum... Podemos executar bundle install, rails db:migration, rails s, etc... 

Como o objetivo desse post é compartilhar meu ambiente de trabalho, vou parando por aqui, mas se tiver interesse em “continuar nesse caminho”, dê uma olhada no Guia oficial: https://guides.rubyonrails.org/getting_started.html#creating-the-blog-application

Top comments (2)

Collapse
 
hercilioln profile image
Hercilio LN

Jony, caí de paraquedas nesse artigo e só tenho a agradecer quanto à instalação do Postgres no WSL, eu ja tava sem esperanças porque não funcionava de jeito nenhum, sempre dando esse problema do servidor. A dica de reverter WSL2 para WSL1 foi extremamente útil, muito obrigado.

Collapse
 
jonyhayama profile image
Jony Hayama

Opa! fico feliz que tenha funcionado! Confesso que gastei bastante tempo nesse problema também... hehehe