O que é um ambiente de desenvolvimento?
A cozinha antes do restaurante
Você acabou de ser contratado como chef em um novo restaurante. No primeiro dia, você entra e a cozinha está completamente vazia: sem fogão, sem facas, sem geladeira, sem ingredientes. Você não consegue preparar um único prato até que essa cozinha esteja montada.
Desenvolver software funciona da mesma forma. Antes de escrever uma única linha de código Ruby, antes de rodar rails server, antes de ver sua aplicação no navegador: você precisa de um ambiente de desenvolvimento. Essa é a cozinha onde toda a sua programação acontece.
Pular a configuração significa encontrar erros confusos mais tarde. Fazer certo significa que suas ferramentas funcionam juntas de forma fluida todos os dias.
O que um ambiente de desenvolvimento contém
Um ambiente de desenvolvimento é o conjunto completo de ferramentas instaladas e configuradas no seu computador para que você possa escrever, rodar, testar e depurar código. Para um desenvolvedor Rails no macOS, estas são as peças essenciais:
+-------------------------------------------+
| SEU AMBIENTE DE DESENVOLVIMENTO |
| |
| +-------------+ +-------------------+ |
| | Editor de | | Terminal / Shell | |
| | Código | | (Terminal + Zsh) | |
| | (VS Code) | +-------------------+ |
| +-------------+ |
| +-------------------+ |
| +-------------+ | Gerenciador de | |
| | Runtime da | | Pacotes | |
| | Linguagem | | (Homebrew) | |
| | (Ruby) | +-------------------+ |
| +-------------+ |
| +-------------------+ |
| +-------------+ | Gerenciador de | |
| | Banco de | | Versões (rbenv) | |
| | Dados | +-------------------+ |
| | (PostgreSQL)| |
| +-------------+ +-------------------+ |
| | Framework Web | |
| +-------------+ | (Rails) | |
| | Git (VCS) | +-------------------+ |
| +-------------+ |
+-------------------------------------------+
Cada peça tem uma função específica:
| Ferramenta | O que Faz | Exemplo no Rails |
|---|---|---|
| Editor de Código | Onde você escreve e lê código | Editar app/models/user.rb no VS Code |
| Terminal + Shell | Onde você executa comandos | Rodar rails server |
| Runtime da Linguagem | Executa seu código | Ruby interpreta seus arquivos .rb |
| Gerenciador de Pacotes | Instala ferramentas de desenvolvimento | Homebrew instala PostgreSQL, Ruby |
| Gerenciador de Versões | Alterna entre versões da linguagem | rbenv permite usar Ruby 4.0 em um projeto, 3.2 em outro |
| Banco de Dados | Armazena os dados da aplicação | PostgreSQL guarda usuários, posts, pedidos |
| Git | Rastreia alterações no código | Histórico de commits, branches, colaboração |
| Framework Web | Fornece estrutura para apps web | Rails oferece MVC, rotas, ORM |
Por que o macOS é o padrão da indústria para Rails
Abra seu Terminal agora e digite:
uname -s
Você verá:
Darwin
Essa única palavra revela algo importante. Darwin é o nome do kernel do macOS, e ele é construído sobre o BSD Unix. Isso significa que o macOS é um sistema operacional baseado em Unix na sua essência.
Por que isso importa para o Rails? Porque os servidores de produção (os computadores que rodam sua aplicação para usuários reais) quase sempre rodam Linux, que também é baseado em Unix. Os comandos, caminhos de arquivos, permissões e gerenciamento de processos que você aprende no macOS se transferem diretamente para a produção.
macOS (seu laptop) Linux (servidor de produção)
+------------------+ +------------------+
| Kernel Darwin | | Kernel Linux |
| (base BSD Unix) | | (tipo Unix) |
+------------------+ +------------------+
| Mesmos comandos: | | Mesmos comandos: |
| ls, cd, grep, | | ls, cd, grep, |
| chmod, ps, kill | | chmod, ps, kill |
+------------------+ +------------------+
No Windows, esses comandos não existem nativamente. Desenvolvedores Windows usam o WSL (Windows Subsystem for Linux), que roda um kernel Linux de verdade numa máquina virtual leve, para ter a mesma experiência que o macOS oferece de fábrica.
Essa fundação Unix também significa que o macOS tem um sistema de permissões de arquivos adequado (chmod, chown), gerenciamento de processos (ps, kill) e um shell Unix (Zsh). Isso não são extras: o Rails depende deles. Quando o bin/dev de um app roda vários processos (um servidor Rails e um watcher de CSS, por exemplo), ele usa uma ferramenta chamada Foreman que cria processos Unix. Quando você faz deploy, seu servidor usa o mesmo modelo de processos.
A diferença entre ferramentas do sistema e ferramentas de desenvolvimento
O macOS vem com algumas ferramentas de desenvolvimento pré-instaladas, mas elas geralmente são desatualizadas ou limitadas:
/usr/bin/ruby --version
ruby 2.6.10p210 (2022-04-12 revision 67958)
Esse Ruby do sistema está anos atrás da versão atual. Ele existe para que scripts internos do macOS funcionem, não para você construir aplicações. O mesmo vale para o Git do sistema, o Python do sistema e outros.
Seu ambiente de desenvolvimento substitui essas ferramentas por versões atuais que você controla:
# Depois de configurar seu ambiente de desenvolvimento:
which ruby
# /Users/seunome/.rbenv/shims/ruby
ruby --version
# ruby 4.0.1 (2026-01-13 revision e04267a14b) +PRISM [arm64-darwin25]
Perceba a diferença no caminho. O Ruby do sistema fica em /usr/bin/ruby (pertence à Apple). O seu Ruby fica no seu diretório home (pertence a você). Essa separação é crítica: você nunca quer modificar ferramentas do sistema, e sempre quer controle total sobre suas ferramentas de desenvolvimento.
Como as peças se conectam no fluxo de trabalho Rails
Veja o que acontece quando você roda rails new my_app depois de configurar seu ambiente:
- O Shell (Zsh) recebe seu comando
- O Shell encontra o executável
railsatravés dos shims do rbenv - O rbenv ativa a versão correta do Ruby
- O Ruby executa o código da gem Rails
- O Rails gera os arquivos do projeto e roda
bundle install - O Bundler baixa gems (bibliotecas Ruby) da internet
- O Rails escreve o
config/database.yml(SQLite por padrão; PostgreSQL se você passar--database=postgresql) - Você abre o projeto no VS Code
- Você roda
bin/devno Terminal, que inicia o servidor Rails - Seu navegador mostra a aplicação rodando
Cada ferramenta do seu ambiente de desenvolvimento participou. Se qualquer uma delas estiver faltando ou mal configurada, a cadeia se quebra.
Erros comuns
"Vou usar o Ruby do sistema mesmo": O Ruby do sistema está travado em uma versão antiga e exige sudo para instalar gems. Isso leva a erros de permissão e conflitos de versão. Sempre use um gerenciador de versões.
"Vou configurar tudo depois, quando precisar": Problemas de ambiente se acumulam. Instalar o PostgreSQL depois de já ter começado um projeto significa reconfigurar conexões de banco de dados, lidar com extensões nativas incompatíveis e perder tempo.
"Meu amigo usa Linux, então a configuração é a mesma": Os conceitos são idênticos, mas os comandos diferem. O Homebrew é específico do macOS. Linux usa apt, yum ou pacman. Os caminhos de arquivos também diferem (/opt/homebrew no macOS vs /usr no Linux).
A conexão com o Rails
O Rails é opinativo: ele pressupõe um ambiente configurado de certa forma. O Gemfile espera que você tenha o Bundler. O config/database.yml espera que o servidor de banco esteja rodando (PostgreSQL, neste curso). O bin/dev instala o Foreman sozinho quando o app precisa dele. O rails server espera que o Ruby esteja no seu PATH.
Cada aula deste curso instala e configura uma peça desse ambiente. Na última aula, você vai rodar rails new e tudo vai funcionar porque cada dependência está no lugar.
Isso não é trabalho à toa. Desenvolvedores seniores cuidam dos seus ambientes com atenção. Quando algo quebra em produção, a primeira pergunta é sempre: "Você consegue reproduzir localmente?" Isso exige um ambiente de desenvolvimento configurado corretamente.
Resumo
| Conceito | Ponto Chave |
|---|---|
| Ambiente de Desenvolvimento | Conjunto completo de ferramentas configuradas para escrever, rodar e depurar código |
| macOS + Darwin | SO baseado em Unix: comandos transferem diretamente para servidores Linux de produção |
| Ruby do Sistema vs Ruby de Dev | Ruby do sistema é desatualizado e restrito; Ruby de dev é atual e controlado por você |
| Ferramentas Essenciais | Editor, Terminal, Ruby, Gerenciador de Pacotes, Gerenciador de Versões, Banco de Dados, Git |
| Por que a Configuração Importa | O Rails espera que cada ferramenta esteja instalada: uma peça faltando quebra a cadeia |
| Fundação Unix | Permissões de arquivos, gerenciamento de processos e comandos shell: tudo exigido pelo Rails |
Continue com a aula 2
Homebrew: seu gerenciador de pacotes
Instala o Homebrew e explica fórmulas, casks, bottles, o Cellar, symlinks e o controle de serviços em segundo plano.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.