rails-expert
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseRails 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 servicesRails 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 servicesPerformance Optimization Matrix
性能优化矩阵
| Issue | Solution | Implementation |
|---|---|---|
| N+1 queries | Eager loading | |
| Slow counts | Counter caches | |
| Repeated queries | Fragment caching | |
| Large datasets | Pagination | Kaminari / Pagy gems |
| Slow API responses | JSON caching | |
| 问题 | 解决方案 | 实现方式 |
|---|---|---|
| N+1查询 | 预加载 | |
| 计数缓慢 | 计数器缓存 | 关联上使用 |
| 重复查询 | 片段缓存 | |
| 大数据集 | 分页 | Kaminari / Pagy gems |
| API响应缓慢 | JSON缓存 | |
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