WSL2: Linux de verdade dentro do Windows
Seu notebook Windows, uma cozinha Linux
Aqui vai um fato que muda a forma como você deve pensar na sua máquina Windows: quase toda aplicação Rails do mundo roda em Linux em produção. Quando você faz deploy para um VPS, para o Heroku, para o Fly.io ou para um cluster Kubernetes, seu código roda em uma máquina Linux: não em Windows.
Por anos isso significou uma escolha ruim para quem usa Windows: fazer dual-boot com Linux, rodar uma máquina virtual pesada, ou brigar com peculiaridades do Windows que nenhum guia de Rails prevê. O WSL2 (Windows Subsystem for Linux, versão 2) acaba com essa escolha. Ele roda um kernel Linux de verdade, dentro de uma máquina virtual leve, conectado diretamente ao Windows. Você ganha um apt de verdade, um filesystem de verdade, um bash de verdade (os mesmos fundamentos que seu servidor de produção usa) enquanto seu navegador, seus arquivos e seus aplicativos Windows continuam rodando onde já estavam.
WSL1 vs. WSL2: por que a versão importa
O WSL1 veio primeiro e era engenhoso, mas incompleto: ele traduzia chamadas de sistema Linux para chamadas do Windows na hora, sem um kernel Linux de verdade por baixo. Extensões nativas de gems e detalhes internos de bancos de dados que dependem do comportamento real do kernel podiam se comportar de forma estranha.
O WSL2 é um design diferente:
+----------------------------------------------------------+
| WINDOWS 11 |
| |
| +-------------------+ +---------------------------+ |
| | Windows Terminal | | VS Code (Windows) | |
| | Explorer, navegador| | + extensão Remote-WSL | |
| +-------------------+ +--------------+--------------+ |
| | ponte |
| +-----------------------------------------v--------------+ |
| | Máquina virtual leve (Hyper-V), inicia em segundos | |
| | +----------------------------------------------------+ | |
| | | Kernel Linux de Verdade | | |
| | | +------------------------------------------------+ | | |
| | | | Espaço de usuário Ubuntu: apt, bash, rbenv, | | | |
| | | | PostgreSQL, Ruby, Rails, Puma | | | |
| | | +------------------------------------------------+ | | |
| | +----------------------------------------------------+ | |
| +-----------------------------------------------------------+ |
+----------------------------------------------------------+
A caixa de dentro é um kernel Linux de verdade: o mesmo que sobe em um servidor Ubuntu bare-metal. O apt se comporta como apt. O pg_ctl se comporta como pg_ctl. Extensões nativas de gems compilam como compilam em produção.
A única regra que poupa suas horas: onde seu código mora
Windows e WSL2 conseguem enxergar os arquivos um do outro, mas não na mesma velocidade. Os discos do Windows ficam montados dentro do WSL2 em /mnt/c, /mnt/d, e por aí vai, acessados através de um protocolo de filesystem no estilo de rede. A quantidade enorme de leituras pequenas de arquivo que um bundle install ou rails server faz deixa o Rails lento nessa fronteira, e a observação de arquivos (da qual dependem o recarregamento de código do Rails e o watcher do Tailwind) pode não perceber mudanças.
A regra para todo este curso: seus projetos Rails moram dentro do filesystem do Linux, em um caminho como ~/code/, nunca em /mnt/c/Users/.... Ruby, PostgreSQL e sua app inteira instalam e rodam do lado Linux. O Windows vira a tela: o Windows Terminal mostra o shell, a extensão Remote-WSL do VS Code mostra o editor, seu navegador mostra o localhost:3000. O processamento em si nunca sai do Linux.
O que você vai montar
| Ferramenta | Função | O que ela substitui |
|---|---|---|
| WSL2 + Ubuntu | Uma máquina Linux de verdade, rodando ao lado do Windows | Dual-boot ou uma VM completa |
apt |
Instala software do sistema | A Microsoft Store, para ferramentas de dev |
build-essential |
Compiladores (gcc, make) que compilam Ruby e gems nativas | Visual Studio Build Tools |
rbenv |
Instala e alterna versões de Ruby por projeto | Igual em macOS/Linux |
| PostgreSQL | O banco de dados com o qual o Rails conversa | Igual em macOS/Linux |
| VS Code + Remote-WSL | Editor no Windows, código e terminal no Linux | Um esquema estilo área de trabalho remota |
Confira a versão do seu Windows
O WSL2 exige o Windows 10 versão 2004 (build 19041) ou mais recente, ou qualquer edição do Windows 11. Abra o PowerShell e rode:
winver
Uma janelinha mostra sua versão e o número da build. Se você estiver abaixo da build 19041, rode o Windows Update antes de continuar: tudo mais neste curso depende disso.
Como este curso está organizado
- Instalar o WSL2, o Ubuntu e as ferramentas de build
- Se familiarizar com o shell e a fronteira entre Windows e Linux
- Instalar o Ruby com
rbenv - Instalar e rodar o PostgreSQL dentro do WSL2
- Fazer a ponte entre o VS Code e o WSL2 com a extensão Remote-WSL
- Criar e rodar sua primeira app Rails
Todo comando deste curso foi testado no Ubuntu 24.04 sob o WSL2 no Windows 11. Digite os comandos você mesmo em vez de copiar: seus dedos aprendem mais rápido que seus olhos.
Por que não uma VM completa ou dual-boot?
Você poderia instalar o VirtualBox e uma VM Ubuntu completa, ou fazer dual-boot entre Windows e Linux lado a lado. O WSL2 ganha dos dois para o trabalho diário com Rails:
- Integração: seu clipboard do Windows, seu navegador e seus arquivos estão a um
explorer.exe .de distância do seu shell Linux: sem copiar e colar entre janelas de VM. - Velocidade: uma VM leve e feita sob medida, com memória dinâmica, ganha de uma VM genérica que sobe uma área de trabalho completa que você nunca vai olhar.
- Uma máquina só para manter: sem particionamento, sem um segundo sistema operacional para atualizar e reiniciar: o Ubuntu liga e desliga como um aplicativo.
Vamos ligar sua cozinha Linux.
Continue com a aula 2
Instalando WSL2, Ubuntu e ferramentas de build
Instalação do WSL2 e do Ubuntu com um comando, do Windows Terminal e das ferramentas de build pelo apt.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.