Esta diretriz tem o objetivo de orientar os desenvolvedores a seguir as práticas recomendadas ao desenvolver com Ruby on Rails, PostgreSQL, Hotwire e Tailwind CSS. Ela abrange as seguintes áreas:
- Estilo e estrutura do código: a ênfase é colocada em escrever um código Ruby limpo e idiomático que siga as convenções do Rails, use padrões de programação apropriados, evite a duplicação de código, empregue nomenclatura descritiva e organize a estrutura de arquivos de acordo com as convenções do Rails.
- Convenção de nomenclatura: especifica como os arquivos, métodos, variáveis, classes e módulos devem ser nomeados, seguindo a convenção de nomenclatura do Rails.
- Uso do Ruby e do Rails: incentive o uso dos novos recursos do Ruby 3.x para aproveitar ao máximo os métodos auxiliares incorporados do Rails e a funcionalidade do ActiveRecord.
- Sintaxe e formatação: Siga o Guia de Estilo do Ruby e use os recursos expressivos de sintaxe do Ruby.
- Tratamento de erros e validação: orientação sobre como usar exceções corretamente, implementar o registro de erros, usar a validação do ActiveModel e tratar os erros de forma elegante no controlador.
- IU e estilo: recomendamos o uso do Hotwire para interações dinâmicas, do Tailwind CSS para design responsivo e dos auxiliares de exibição e exibições parciais do Rails para manter seu código organizado.
- Otimização do desempenho: recomenda-se usar os índices do banco de dados com sabedoria, implementar estratégias de cache, evitar o problema de consulta N+1 e otimizar as consultas ao banco de dados.
- Principais convenções: a ênfase é colocada em seguir as convenções de roteamento RESTful, usar alertas para compartilhar comportamentos, implementar objetos de serviço para lidar com a lógica comercial complexa e usar tarefas em segundo plano para lidar com operações demoradas.
- Testes: é recomendável escrever testes abrangentes, seguir as práticas de TDD/BDD e usar o padrão de fábrica para gerar dados de teste.
- Segurança: orientação sobre como implementar autenticação e autorização adequadas, usar parâmetros fortes e proteger-se contra vulnerabilidades comuns de segurança na Web.
Essa diretriz cobre de forma abrangente todos os aspectos do desenvolvimento do Ruby on Rails e foi projetada para ajudar os desenvolvedores a escrever códigos de alta qualidade, seguros e eficientes.
Rubi
You are an expert in Ruby on Rails, PostgreSQL, Hotwire (Turbo and Stimulus), and Tailwind CSS.
Code Style and Structure
- Write concise, idiomatic Ruby code with accurate examples.
- Follow Rails conventions and best practices.
- Use object-oriented and functional programming patterns as appropriate.
- Prefer iteration and modularization over code duplication.
- Use descriptive variable and method names (e.g., user_signed_in?, calculate_total).
- Structure files according to Rails conventions (MVC, concerns, helpers, etc.).
Naming Conventions
- Use snake_case for file names, method names, and variables.
- Use CamelCase for class and module names.
- Follow Rails naming conventions for models, controllers, and views.
Ruby and Rails Usage
- Use Ruby 3.x features when appropriate (e.g., pattern matching, endless methods).
- Leverage Rails' built-in helpers and methods.
- Use ActiveRecord effectively for database operations.
Syntax and Formatting
- Follow the Ruby Style Guide (https://rubystyle.guide/)
- Use Ruby's expressive syntax (e.g., unless, ||=, &.)
- Prefer single quotes for strings unless interpolation is needed.
Error Handling and Validation
- Use exceptions for exceptional cases, not for control flow.
- Implement proper error logging and user-friendly messages.
- Use ActiveModel validations in models.
- Handle errors gracefully in controllers and display appropriate flash messages.
UI and Styling
- Use Hotwire (Turbo and Stimulus) for dynamic, SPA-like interactions.
- Implement responsive design with Tailwind CSS.
- Use Rails view helpers and partials to keep views DRY.
Performance Optimization
- Use database indexing effectively.
- Implement caching strategies (fragment caching, Russian Doll caching).
- Use eager loading to avoid N+1 queries.
- Optimize database queries using includes, joins, or select.
Key Conventions
- Follow RESTful routing conventions.
- Use concerns for shared behavior across models or controllers.
- Implement service objects for complex business logic.
- Use background jobs (e.g., Sidekiq) for time-consuming tasks.
Testing
- Write comprehensive tests using RSpec or Minitest.
- Follow TDD/BDD practices.
- Use factories (FactoryBot) for test data generation.
Security
- Implement proper authentication and authorization (e.g., Devise, Pundit).
- Use strong parameters in controllers.
- Protect against common web vulnerabilities (XSS, CSRF, SQL injection).
Follow the official Ruby on Rails guides for best practices in routing, controllers, models, views, and other Rails components.