rails-expert

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Rails Expert

Rails专家

Purpose

用途

Provides expert Ruby on Rails development expertise specializing in Rails 7+ modern features, Hotwire stack (Turbo, Stimulus), and modern Rails patterns. Excels at building full-stack web applications with server-rendered HTML, real-time updates, and structured client-side behavior without heavy JavaScript frameworks.
提供专业的Ruby on Rails开发技术专长,专注于Rails 7+的现代特性、Hotwire技术栈(Turbo、Stimulus)以及现代Rails设计模式。擅长构建基于服务器渲染HTML、实时更新且无需重型JavaScript框架的结构化客户端行为的全栈Web应用。

When to Use

适用场景

  • Building modern Rails 7+ applications with Hotwire (Turbo, Stimulus)
  • Implementing real-time features with Turbo Streams and Action Cable
  • Migrating legacy Rails apps to modern Rails patterns and conventions
  • Building API-first Rails applications with JSON:API or GraphQL
  • Optimizing Rails application performance (database queries, N+1, caching)
  • Implementing complex Rails patterns (Service Objects, Form Objects, Query Objects)
  • Integrating Rails with modern frontend tools (Import Maps, esbuild, Vite)
  • 基于Hotwire(Turbo、Stimulus)构建现代Rails 7+应用
  • 利用Turbo Streams和Action Cable实现实时功能
  • 将遗留Rails应用迁移至现代Rails模式与规范
  • 构建基于JSON:API或GraphQL的API优先Rails应用
  • 优化Rails应用性能(数据库查询、N+1问题、缓存)
  • 实现复杂Rails设计模式(Service Objects、Form Objects、Query Objects)
  • 集成Rails与现代前端工具(Import Maps、esbuild、Vite)

Quick Start

快速入门

Invoke this skill when:
  • Building Rails 7+ apps with Hotwire/Turbo/Stimulus
  • Implementing real-time features (Turbo Streams, Action Cable)
  • Migrating legacy Rails to modern patterns
  • Building API-first Rails (JSON:API, GraphQL)
  • Optimizing performance (N+1, caching, eager loading)
  • Using Rails patterns (Service Objects, Form Objects, Query Objects)
Do NOT invoke when:
  • Only frontend development needed → Use frontend-developer or react-specialist
  • Database-specific optimization → Use database-optimizer or postgres-pro
  • Pure API design without Rails → Use api-designer
  • DevOps/deployment only → Use devops-engineer
在以下场景调用此技能:
  • 基于Hotwire/Turbo/Stimulus构建Rails 7+应用
  • 实现实时功能(Turbo Streams、Action Cable)
  • 将遗留Rails应用迁移至现代模式
  • 构建API优先的Rails应用(JSON:API、GraphQL)
  • 优化性能(N+1问题、缓存、预加载)
  • 使用Rails设计模式(Service Objects、Form Objects、Query Objects)
请勿在以下场景调用:
  • 仅需前端开发 → 使用frontend-developer或react-specialist
  • 数据库特定优化 → 使用database-optimizer或postgres-pro
  • 无Rails的纯API设计 → 使用api-designer
  • 仅DevOps/部署工作 → 使用devops-engineer

Core Capabilities

核心能力

Rails 7+ Modern Features

Rails 7+ 现代特性

  • Hotwire: Turbo, Stimulus, and dynamic HTML updates without JavaScript frameworks
  • Import Maps: JavaScript dependency management without build tools
  • Rails 7 Action Text: Rich text editing with modern UI
  • Encrypted Credentials: Enhanced security for sensitive data
  • Async Query Loading: Improved database query performance
  • Multi-DB Support: Primary/replica database configurations
  • Parallel Testing: Faster test execution across processes
  • Async Action Mailer: Non-blocking email delivery
  • Hotwire: Turbo、Stimulus,无需JavaScript框架的动态HTML更新
  • Import Maps: 无需构建工具的JavaScript依赖管理
  • Rails 7 Action Text: 具备现代UI的富文本编辑功能
  • Encrypted Credentials: 增强敏感数据的安全性
  • Async Query Loading: 提升数据库查询性能
  • Multi-DB Support: 主/从数据库配置
  • Parallel Testing: 跨进程加速测试执行
  • Async Action Mailer: 非阻塞式邮件发送

Hotwire Stack

Hotwire技术栈

  • Turbo Drive: Faster page navigation with automatic page caching
  • Turbo Frames: Partial page updates without full reloads
  • Turbo Streams: Real-time updates over WebSocket or SSE
  • Stimulus Controllers: Structured client-side JavaScript behavior
  • Turbo Morph: Smart DOM diffing for minimal re-renders
  • Turbo Drive: 自动页面缓存实现更快的页面导航
  • Turbo Frames: 无需全页重载的部分页面更新
  • Turbo Streams: 通过WebSocket或SSE实现实时更新
  • Stimulus Controllers: 结构化的客户端JavaScript行为
  • Turbo Morph: 智能DOM差异对比,实现最小化重渲染

Modern Rails Patterns

现代Rails设计模式

  • Service Objects: Extract business logic from controllers
  • Query Objects: Complex database queries as reusable objects
  • Form Objects: Handle complex form logic and validation
  • Decorators: Presentational logic separation
  • View Components: Reusable UI component architecture
  • API Resources: Consistent API response formatting
  • Service Objects: 从控制器中提取业务逻辑
  • Query Objects: 将复杂数据库查询封装为可复用对象
  • Form Objects: 处理复杂表单逻辑与验证
  • Decorators: 分离展示层逻辑
  • View Components: 可复用UI组件架构
  • API Resources: 统一API响应格式

Decision Framework

决策框架

Rails Feature Selection

Rails特性选择

Rails Development Decision
├─ Need real-time updates
│   ├─ User-specific updates → Turbo Streams + Action Cable
│   ├─ Broadcast to multiple users → Action Cable channels
│   └─ Simple form responses → Turbo Streams over HTTP
├─ Frontend architecture
│   ├─ Minimal JS, server-rendered → Hotwire (Turbo + Stimulus)
│   ├─ Complex client-side logic → Rails API + React/Vue
│   └─ Hybrid approach → Turbo Frames for islands of interactivity
├─ Database strategy
│   ├─ Read-heavy workload → Multi-DB with read replicas
│   ├─ Complex queries → Query Objects + proper indexing
│   └─ Caching needed → Russian doll caching + fragment caching
└─ Code organization
    ├─ Fat models → Extract Service Objects
    ├─ Complex validations → Form Objects
    └─ Business logic in controllers → Move to services
Rails Development Decision
├─ Need real-time updates
│   ├─ User-specific updates → Turbo Streams + Action Cable
│   ├─ Broadcast to multiple users → Action Cable channels
│   └─ Simple form responses → Turbo Streams over HTTP
├─ Frontend architecture
│   ├─ Minimal JS, server-rendered → Hotwire (Turbo + Stimulus)
│   ├─ Complex client-side logic → Rails API + React/Vue
│   └─ Hybrid approach → Turbo Frames for islands of interactivity
├─ Database strategy
│   ├─ Read-heavy workload → Multi-DB with read replicas
│   ├─ Complex queries → Query Objects + proper indexing
│   └─ Caching needed → Russian doll caching + fragment caching
└─ Code organization
    ├─ Fat models → Extract Service Objects
    ├─ Complex validations → Form Objects
    └─ Business logic in controllers → Move to services

Performance Optimization Matrix

性能优化矩阵

IssueSolutionImplementation
N+1 queriesEager loading
includes(:association)
/
preload
Slow countsCounter caches
counter_cache: true
on associations
Repeated queriesFragment caching
cache @object do
blocks
Large datasetsPaginationKaminari / Pagy gems
Slow API responsesJSON caching
stale?
/
fresh_when
问题解决方案实现方式
N+1查询预加载
includes(:association)
/
preload
计数缓慢计数器缓存关联上使用
counter_cache: true
重复查询片段缓存
cache @object do
代码块
大数据集分页Kaminari / Pagy gems
API响应缓慢JSON缓存
stale?
/
fresh_when

Best Practices

最佳实践

Rails 7+ Features

Rails 7+特性

  • Hotwire First: Use Turbo/Stimulus before reaching for JS frameworks
  • Import Maps: Manage JS dependencies without complex bundlers
  • Async Query Loading: Leverage parallel query execution
  • Multi-DB: Use read replicas for read-heavy workloads
  • Hotwire优先: 在使用JS框架前优先考虑Turbo/Stimulus
  • Import Maps: 无需复杂打包工具即可管理JS依赖
  • 异步查询加载: 利用并行查询执行
  • 多数据库: 为读密集型工作负载使用只读副本

Code Organization

代码组织

  • Service Objects: Extract business logic from controllers
  • Query Objects: Encapsulate complex database queries
  • Form Objects: Handle complex form validation logic
  • View Components: Create reusable, testable UI components
  • Service Objects: 从控制器中提取业务逻辑
  • Query Objects: 封装复杂数据库查询
  • Form Objects: 处理复杂表单验证逻辑
  • View Components: 创建可复用、可测试的UI组件

Performance

性能

  • Eager Loading: Always use includes/preload for associations
  • Counter Caches: Pre-calculate counts for associations
  • Caching Strategy: Implement multi-level caching
  • Database Indexes: Add indexes based on query patterns
  • 预加载: 始终为关联使用includes/preload
  • 计数器缓存: 预计算关联的计数
  • 缓存策略: 实现多级缓存
  • 数据库索引: 根据查询模式添加索引

Testing

测试

  • System Tests: Use for critical user journeys
  • Component Tests: Test View Components in isolation
  • Request Tests: Test API endpoints comprehensively
  • Model Tests: Test business logic at unit level
  • 系统测试: 用于关键用户流程
  • 组件测试: 独立测试View Components
  • 请求测试: 全面测试API端点
  • 模型测试: 在单元级别测试业务逻辑

Anti-Patterns

反模式

Architecture Anti-Patterns

架构反模式

  • Fat Controllers: Business logic in controllers - use Service Objects and POROs
  • Massive Models: Models handling too many responsibilities - extract concerns
  • Callback Spaghetti: Complex callback chains - use service objects
  • Skinny Controller, Fat Model: All logic in model - balance distribution
  • 胖控制器: 控制器中包含业务逻辑 - 使用Service Objects和POROs
  • 巨型模型: 模型承担过多职责 - 提取关注点
  • 回调 spaghetti: 复杂的回调链 - 使用服务对象
  • 瘦控制器,胖模型: 所有逻辑都在模型中 - 平衡分布

Database Anti-Patterns

数据库反模式

  • N+1 Queries: Not using eager loading - use includes/joins/preload
  • Missing Indexes: Slow queries without proper indexes - analyze and add
  • Counter Cache Miss: Repeated count queries - use counter caches
  • Migrations Without Down: Non-reversible migrations - ensure reversibility
  • N+1查询: 未使用预加载 - 使用includes/joins/preload
  • 缺失索引: 无适当索引导致查询缓慢 - 分析并添加
  • 计数器缓存缺失: 重复的计数查询 - 使用计数器缓存
  • 无回滚的迁移: 不可逆迁移 - 确保可回滚

Performance Anti-Patterns

性能反模式

  • Eager Loading Excess: Over-eager loading causing memory issues
  • Missing Caching: No caching strategy - implement appropriate levels
  • Render Bloat: Heavy view rendering - use fragments and caching
  • Job Queue Backlog: No background job processing - use Active Job
  • 过度预加载: 过度预加载导致内存问题
  • 缺失缓存: 无缓存策略 - 实现适当级别的缓存
  • 渲染臃肿: 视图渲染过重 - 使用片段和缓存
  • 任务队列积压: 无后台任务处理 - 使用Active Job

Additional Resources

额外资源

  • Detailed Technical Reference: See REFERENCE.md
  • Code Examples & Patterns: See EXAMPLES.md
  • 详细技术参考: 参见REFERENCE.md
  • 代码示例与模式: 参见EXAMPLES.md