Você já perdeu horas debuggando um problema que era simplesmente uma versão incompatível do Ruby? Ou teve que esperar 30 segundos toda vez que roda os testes? Esses problemas são sinais de um ambiente de desenvolvimento mal configurado.
Vou mostrar exatamente como configuro minha máquina para desenvolvimento Rails - desde o gerenciador de versões até as extensões do VS Code que me fazem 3x mais produtivo.
📷 Imagem: Ambiente de desenvolvimento RailsPlaceholder - imagem seria exibida aquiArquivo: rails-dev-setup.png.placeholder
Por que um bom ambiente importa?
Depois de anos desenvolvendo em Rails, aprendi que investir tempo na configuração inicial do ambiente economiza horas no futuro. Um ambiente bem configurado oferece:
- Produtividade aumentada - Ferramentas que automatizam tarefas repetitivas
- Menos erros - Linting e formatação automática
- Debug eficiente - Ferramentas de debugging integradas
- Colaboração melhor - Configurações consistentes entre a equipe
Ferramentas Essenciais
1. Terminal e Shell
Uso o Wezterm como terminal com Zsh e Oh My Zsh:
# Instalar Oh My Zsh
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
# Tema recomendado
ZSH_THEME="robbyrussell"
2. Editor: VS Code
Extensões indispensáveis para Rails:
- Ruby LSP - Suporte completo ao Ruby
- Ruby Solargraph - IntelliSense e documentação
- Rails - Snippets e navegação
- GitLens - Histórico e blame do Git
- Thunder Client - Testar APIs
📷 Imagem: VS Code configurado para RailsPlaceholder - imagem seria exibida aquiArquivo: vscode-rails.png.placeholder
3. Gerenciador de Versões: mise
Como mostrei no post anterior sobre mise, uso o mise para gerenciar versões do Ruby, Node.js e outras ferramentas.
# .mise.toml no projeto
[tools]
ruby = "3.2.0"
node = "20.10.0"
postgres = "15"
Configuração do Projeto Rails
Estrutura do Gemfile
Organizo as gems de desenvolvimento de forma clara:
group :development, :test do
gem 'rspec-rails'
gem 'factory_bot_rails'
gem 'faker'
gem 'pry-byebug'
end
group :development do
gem 'rubocop-rails', require: false
gem 'solargraph'
gem 'rails_best_practices'
gem 'bullet'
end
Scripts Úteis
Crio scripts em bin/ para automatizar tarefas:
#!/bin/bash
# bin/setup
set -e
echo "🚀 Configurando o projeto..."
# Instalar dependências
bundle install
yarn install
# Setup do banco
rails db:create
rails db:migrate
rails db:seed
echo "✅ Projeto configurado com sucesso!"
Docker para Serviços
Uso Docker Compose para serviços auxiliares:
# docker-compose.yml
version: '3.8'
services:
postgres:
image: postgres:15
environment:
POSTGRES_PASSWORD: password
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
redis:
image: redis:7
ports:
- "6379:6379"
volumes:
postgres_data:
📷 Imagem: Docker containers rodandoPlaceholder - imagem seria exibida aquiArquivo: docker-services.png.placeholder
Dotfiles e Configurações
Mantenho minhas configurações no GitHub para sincronizar entre máquinas:
# ~/.zshrc
export EDITOR="code"
export BUNDLER_EDITOR="code"
export RAILS_ENV="development"
# Aliases úteis
alias be="bundle exec"
alias rc="rails console"
alias rs="rails server"
alias rt="rails test"
Debugging Eficiente
Pry para Debug
Configure o Pry como console padrão:
# config/application.rb
console do
require "pry"
config.console = Pry
end
Rails Console Melhorado
Adicione gems para melhorar o console:
# Gemfile
gem 'awesome_print'
gem 'hirb'
Testes e Qualidade
RSpec Configuration
# spec/rails_helper.rb
RSpec.configure do |config|
config.use_transactional_fixtures = true
config.infer_spec_type_from_file_location!
config.filter_rails_from_backtrace!
# FactoryBot
config.include FactoryBot::Syntax::Methods
end
Rubocop para Consistência
# .rubocop.yml
AllCops:
TargetRubyVersion: 3.2
NewCops: enable
Style/Documentation:
Enabled: false
Metrics/LineLength:
Max: 120
Produtividade com Snippets
Crio snippets personalizados no VS Code:
{
"Rails Model": {
"prefix": "rmodel",
"body": [
"class ${1:ModelName} < ApplicationRecord",
" $0",
"end"
]
}
}
Monitoramento e Performance
Bullet para N+1 Queries
# config/environments/development.rb
config.after_initialize do
Bullet.enable = true
Bullet.bullet_logger = true
Bullet.console = true
end
Rails Panel para Chrome
A extensão Rails Panel mostra informações detalhadas sobre cada request.
📷 Imagem: Rails Panel no ChromePlaceholder - imagem seria exibida aquiArquivo: rails-panel.png.placeholder
Backup e Sincronização
Configurações na Nuvem
- Dotfiles no GitHub
- Configurações do VS Code sincronizadas
- Snippets e extensões versionados
Scripts de Backup
#!/bin/bash
# scripts/backup-db.sh
pg_dump myapp_development > "backup_$(date +%Y%m%d_%H%M%S).sql"
Conclusão
Um ambiente bem configurado é um investimento que se paga rapidamente. Essas configurações me permitem:
- Começar novos projetos em minutos
- Debuggar problemas rapidamente
- Manter código consistente e de qualidade
- Colaborar eficientemente com a equipe
Próximos Passos
No próximo post, vou mostrar como configurar CI/CD com GitHub Actions para projetos Rails. Não perca!
Recursos Úteis:
Tem alguma dica de produtividade que funciona para você? Compartilhe nos comentários!