Setup para Ruby / Rails: Windows + WSL
Tags: beginners, ruby, rails, braziliandevs
Published: 2024-07-05 03:22:40

# Setup para Ruby / Rails: Windows + WSL

Este artigo descreve como configurar um ambiente de desenvolvimento Ruby / Rails no Windows 11 com WSL. Ele inclui a instalação do Visual Studio Code, Asdf, Ruby, NodeJS, SQLite, Rails e Ruby LSP (plugin para o VSCode).

Antes de começarmos a copiar e colar os comandos no terminal, será preciso habilitar o Hyper-V e fazer a instalação do Windows Terminal e Visual Studio Code (todos os passos estão descritos abaixo). Caso tenha alguma dúvida, problema fique à vontade para deixar um comentário que eu tentarei te ajudar. 😊

Caso você já tenha o WSL + Ubuntu instalado e configurado, você pode pular para a seção ["Configurando o editor padrão do Ubuntu"](#configurando-o-editor-padrão-do-ubuntu).

## Habilitando o Hyper-V

O Hyper-V é uma tecnologia de virtualização que permite executar máquinas virtuais no Windows. Ele é necessário para o WSL 2, que é a versão mais recente do Windows Subsystem for Linux. Para habilitá-lo, siga os passos abaixo:

**1)** Escreva `appwiz.cpl` no campo de busca e pressione Enter.

![Procurando appwiz.cpl no campo de busca](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vjmzz551e217oynd82o4.png)

**2)** Click em "Ativar ou desativar recursos do Windows", marque a caixa "Hyper-V" e clique em OK.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v48h3fjhirkvu2o8bpxr.jpg)

## Instalando o Windows Terminal

O Windows Terminal é um aplicativo que permite abrir várias abas de terminal em uma única janela. Ele é muito útil para alternar entre o terminal do Windows e o WSL. Para instalá-lo, siga os passos abaixo:

**1)** Acesse a Microsoft Store.

![Microsoft Store](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3z2niw7op2ed16mbue27.jpg)

**2)** Procure por `Windows Terminal` e instale o aplicativo.

![Procurando pelo Windows Terminal](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/444o6fku18e9lp9n3ljc.jpg)

## Instalando o WSL (Windows Subsystem for Linux 2)

O WSL é um recurso que permite executar aplicativos Linux no Windows. Será através dele que iremos instalar o Ruby, Rails e outras ferramentas de desenvolvimento. Para instalá-lo, siga os passos abaixo:

**1)** Procure por "Windows Terminal" no campo de busca do Windows, clique com o botão direito do mouse e selecione "Executar como administrador".

![Abrindo terminal como administrador](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hy2zr2oc2da4q4t1k0dj.png)

**2)** Execute: `wsl --install -d Ubuntu`

![Instalando WSL + Ubuntu](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sgbo8re69q1fiygbl14q.png)

**3)** Após a instalação, aparecerá uma mensagem pedindo para definir o usuário e senha do Ubuntu. Faça isso e anote essas informações, pois serão necessárias para acessar o WSL.

![Definindo usuário e senha do Ubuntu](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/48n0j47b5cz05gik2ud7.jpg)

**4)** Ao finalizar você será conectado automaticamente ao Ubuntu.

## Instalando o Visual Studio Code

O Visual Studio Code é um editor de código-fonte desenvolvido pela Microsoft. Ele é muito popular entre os desenvolvedores Ruby / Rails por ser leve, rápido e ter uma grande quantidade de extensões. Para instalá-lo, siga os passos abaixo:

**1)** No Microsoft Store, procure por "Visual Studio Code" e instale o aplicativo.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0t1pyfgn61io4gnuphno.jpg)

**2)** Após a instalação, abra o Visual Studio Code e instale a extensão do WSL.

![Instalando a extensão do WSL no VSCode](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8fmb4jw37a61hyax6eef.jpg)

## Habilitando Ubuntu como padrão no Windows Terminal

**1)** Abra o Windows Terminal. Clique na seta para baixo no canto superior direito (ao lado da aba) e selecione "Configurações".

**2)** Vá para Startup > Default profile e altere o valor para "Ubuntu".

![Habilitando Ubuntu como terminal padrão](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hdxd9u8ttmu05lxh52pc.png)

**3)** Feche e abra o Windows Terminal novamente para aplicar as alterações. Você verá que o terminal padrão agora é o Ubuntu.

![Ubuntu como terminal padrão](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wf9pehdmd066fosgv8hy.png)

## Configurando o editor padrão do Ubuntu

> Desse ponto em diante, **todos os comandos serão executados no terminal do Ubuntu.**

Para facilitar a edição de arquivos, vamos configurar o Visual Studio Code como editor padrão do terminal. Para isso, basta copiar e colar os comandos abaixo no terminal:

```sh
# Atualize a lista de pacotes com as versões mais recentes
sudo apt update

# Adicione o Visual Studio Code como editor padrão do terminal
echo 'export EDITOR="code --wait"' >> ~/.bashrc

# Recarregue o arquivo de configuração do terminal
. ~/.bashrc
```

## Instalação do Asdf

asdf é um gerenciador de ferramentas e suas diferentes versões. Ele permite instalar, gerenciar e alternar entre várias versões de Ruby, NodeJS, dentre outros programas e linguagens de programação. Execute os comandos abaixo para fazer a sua instalação.

```sh
# Instale o Git e o Curl
sudo apt install -y curl git

# Instale o asdf
# -- https://asdf-vm.com/guide/getting-started.html#_2-download-asdf
git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.14.0

# Configure o asdf para inicializar no terminal
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.bashrc

# Configure o autocomplete do asdf
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.bashrc

# Recarregue o terminal
. ~/.bashrc
```

## Instalação do Ruby

Ruby é a linguagem de programação utilizada no framework Ruby on Rails. Os comandos abaixo instalam a última versão do Ruby e a definem como a padrão do sistema.

```sh
# Instale as dependências de compilação
# -- https://github.com/rbenv/ruby-build/wiki#ubuntudebianmint
sudo apt install -y autoconf patch build-essential rustc libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libgmp-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev uuid-dev

# Adicione o plugin ao asdf
asdf plugin add ruby

# Instale a última versão
asdf install ruby latest:3
```

Após a instalação, execute os comandos abaixo para definir a versão padrão do Ruby e atualizar o RubyGems (gerenciador de bibliotecas do Ruby).

```sh
# Verifique a versão que foi instalada
asdf list ruby # Deverá aparecer algo como:
               # 3.3.3

# Defina essa versão como a padrão do sistema
asdf global ruby 3.3.3

# Atualize o RubyGems
gem update --system

# Verifique a versão padrão
ruby -v
```

## Instalação do NodeJS

NodeJS é uma plataforma de desenvolvimento de aplicações em JavaScript. O node (ou nodejs) é utilizado pelo Rails para compilar assets (como CSS e JavaScript).

Os comandos abaixo instalam a última versão e a definem como a padrão do sistema.

```ruby
# Instale as dependências de compilação
# -- https://github.com/nodejs/node/blob/main/BUILDING.md#building-nodejs-on-supported-platforms
sudo apt install -y python3 g++ make python3-pip

# Adicione o plugin ao asdf
asdf plugin add nodejs

# Instale a última versão
asdf install nodejs latest

# Verifique a versão que foi instalada
asdf list nodejs # Deverá aparecer algo como:
                 # 22.3.0

# Defina essa versão como a padrão do sistema
asdf global nodejs 22.3.0

# Faça a instalação do yarn
npm install -g yarn

# Verifique a versão padrão
node -v
```

## Instalação do SQLite

SQLite é um banco de dados SQL embutido. Ou seja, ele é um banco de dados que não requer um servidor separado já que tudo é armazenado em um único arquivo.

```sh
sudo apt install -y sqlite3
```

## Instalação do Ruby LSP no Visual Studio Code

O Ruby LSP é um plugin para VSCode que fornece recursos como autocompletar, formatação dentre outros, tanto para Ruby quanto para Rails.

```sh
# Instale a gem do Ruby LSP
gem install ruby-lsp

# Instale a extensão do Ruby LSP no Visual Studio Code
code --install-extension shopify.ruby-lsp
```

## Instalação do Rails

```sh
gem install rails

# Verifique a versão que foi instalada
rails -v
```

## Criando um projeto Rails

Visando testar a instalação do Ruby e do Rails, vamos criar um projeto para verificar se tudo está funcionando.

```sh
# Vá para o diretório home
cd ~

# Crie uma pasta para organizar seus projetos
mkdir Workspace

# Entre na pasta
cd Workspace

# Crie um novo projeto Rails
# O banco de dados padrão é o SQLite
rails new myapp

# Acesse a pasta do projeto
cd myapp

# Crie o banco de dados
bin/rails db:create

# Inicie o servidor
bin/rails s
```

Abra outra aba no terminal e execute o comando para acessar a aplicação no navegador:

```sh
explorer.exe http://localhost:3000
```

### Criando um gerenciador de contatos

```sh
# Crie um scaffold para a entidade Person
bin/rails g scaffold Person first_name last_name email birthdate:date

# Execute as migrações para criar a tabela no banco de dados
bin/rails db:migrate

# Inicie o servidor (caso não esteja rodando)
# bin/rails s

# Acesse o gerenciador de contatos no navegador
explorer.exe http://localhost:3000/people
```

Navegue pelo sistema e teste as funcionalidades de listagem, cadastro, visualização, edição e exclusão de contatos.

### Melhorando a aparência da aplicação

Visando melhorar o visual do sistema, vamos adicionar o Pico CSS versão class-less, que como o nome sugere não faz uso classes CSS. Ou seja, basta adicionar as tags HTML para obter um estilo bonito e padronizado.

```sh
# Dentro da pasta do projeto
cd ~/Workspace/myapp

# Abra o VSCode
code .
```

Dentro do VSCode, abra o arquivo `app/views/layouts/application.html.erb` (utilize o `Ctrl` + `p` para buscar o arquivo) e adicione o seguinte trecho de código dentro da tag.`<head>`:

```html
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.classless.min.css"
/>
```

Nesse mesmo arquivo, envolva o conteúdo da tag `<body>` com uma tag `<main>`:

```html
<body>
  <main><%= yield %></main>
</body>
```

Após essas alterações, acesse o navegador e recarregue para ver o novo visual de todas as páginas do sistema.

### Adicionando validações ao modelo Person

Embora funcional, o gerenciador de cadastro não possui validações. Vamos adicionar algumas para garantir que os dados informados sejam válidos.

Através do VSCode, abra o arquivo `app/models/person.rb` (utilize o `Ctrl` + `p` para buscar o arquivo) e adicione as validações:

```ruby
validates :first_name, :last_name, presence: true
validates :email, format: /@/, allow_blank: true
```

Volte o navegador e tente cadastrar/editar uma pessoa sem informar o nome ou o e-mail (sem `@`).

## Conclusão

Viu como foi simples configurar um ambiente de desenvolvimento Ruby / Rails no Windows 11 + WSL?

Curtiu, então acesse as referências abaixo para obter mais informações sobre cada um dos programas e linguagens utilizadas.

Você sente dificuldades com inglês? Acesse esse outro post para aprender [como traduzir conteúdos técnicos de forma prática através do Google Translator](https://serradura.github.io/pt-BR/blog/traduzindo_conteudo_tecnico_com_google_translator/).

Gostou do conteúdo? Tem outra dica? Então deixe seu comentário aqui embaixo. Valeu! 😉

> **Nota**: Este artigo foi escrito com base no Ubuntu 22.04. Caso você esteja utilizando outra versão, os comandos podem não funcionar corretamente. Caso encontre algum problema, deixe um comentário que eu tentarei te ajudar. 😊

## Referências:

A lista abaixo contém os sites de referência utilizados para a criação deste documento. Ela segue a ordem de aparição no post.

- [Visual Studio Code](https://code.visualstudio.com/)

- [Asdf](https://asdf-vm.com/guide/getting-started.html)

- [Ruby](https://www.ruby-lang.org/en/) ([Versões](https://www.ruby-lang.org/en/downloads/releases/))

- [NodeJS](https://nodejs.org/en/) - ([Versões](https://nodejs.org/en/download/releases/))

- [SQLite](https://www.sqlite.org/index.html)

- [Ruby LSP](https://marketplace.visualstudio.com/items?itemName=Shopify.ruby-lsp)

- [Ruby on Rails](https://rubyonrails.org/) - ([Getting Started](https://guides.rubyonrails.org/getting_started.html))

- [Pico CSS](https://picocss.com/)

---

Já ouviu falar do **ada.rb - Arquitetura e Design de Aplicações em Ruby**? É um grupo focado em práticas de engenharia de software com Ruby. Acesse o <a href="https://t.me/ruby_arch_design_br" target="_blank">canal no telegram</a> e junte-se a nós em nossos <a href="https://meetup.com/pt-BR/arquitetura-e-design-de-aplicacoes-ruby/" target="_blank">meetups</a> 100% on-line.

---