Voltar para os posts

Configurando um Ambiente de Desenvolvimento Rails Perfeito

18 de dezembro de 2024
railsdesenvolvimentoambienteprodutividadeferramentassetupvscodedockerruby

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!