Rails Ruby Cursor Rules
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.