用途
Rails Expert 提供 Ruby on Rails 开发方面的专业能力,专注于 Rails 7+ 现代特性、Hotwire 技术栈(Turbo、Stimulus)以及现代 Rails 模式。它擅长构建全栈 Web 应用,采用服务端渲染 HTML、实时更新和结构化客户端行为,而无需引入重型 JavaScript 框架。
适用场景
该技能适用于以下情况:
- 使用 Hotwire(Turbo、Stimulus)构建现代 Rails 7+ 应用
- 使用 Turbo Streams 和 Action Cable 实现实时功能
- 将遗留 Rails 应用迁移到现代 Rails 模式与约定
- 构建 API 优先的 Rails 应用(JSON:API 或 GraphQL)
- 优化 Rails 应用性能(数据库查询、N+1、缓存)
- 实现复杂的 Rails 模式(Service Objects、Form Objects、Query Objects)
- 将 Rails 与现代前端工具集成(Import Maps、esbuild、Vite)
以下情况不建议使用:
- 仅需前端开发 → 使用 frontend-developer 或 react-specialist
- 数据库专项优化 → 使用 database-optimizer 或 postgres-pro
- 纯 API 设计且不涉及 Rails → 使用 api-designer
- 仅涉及 DevOps/部署 → 使用 devops-engineer
主要能力
Rails 7+ 现代特性
- Hotwire:Turbo、Stimulus,无需 JavaScript 框架即可实现动态 HTML 更新
- Import Maps:无需构建工具的 JavaScript 依赖管理
- Rails 7 Action Text:现代 UI 的富文本编辑
- 加密凭证:敏感数据的增强安全
- 异步查询加载:改进数据库查询性能
- 多数据库支持:主库/副本数据库配置
- 并行测试:跨进程更快执行测试
- 异步 Action Mailer:非阻塞邮件发送
Hotwire 技术栈
- Turbo Drive:自动页面缓存实现更快的页面导航
- Turbo Frames:无需整页重载的局部页面更新
- Turbo Streams:通过 WebSocket 或 SSE 实现实时更新
- Stimulus 控制器:结构化的客户端 JavaScript 行为
- Turbo Morph:智能 DOM diff,最小化重渲染
现代 Rails 模式
- Service Objects:从控制器中抽取业务逻辑
- Query Objects:将复杂数据库查询封装为可复用对象
- Form Objects:处理复杂表单逻辑与验证
- 装饰器:表现逻辑分离
- View Components:可复用 UI 组件架构
- API Resources:一致的 API 响应格式
使用方式
该技能通过决策框架辅助 Rails 功能选择:
- 需要实时更新时:用户特定更新 → Turbo Streams + Action Cable;向多用户广播 → Action Cable channels;简单表单响应 → 基于 HTTP 的 Turbo Streams
- 前端架构选择:最小 JS、服务端渲染 → Hotwire(Turbo + Stimulus);复杂客户端逻辑 → Rails API + React/Vue;混合方案 → 用 Turbo Frames 实现交互孤岛
- 数据库策略:读密集负载 → 多数据库加只读副本;复杂查询 → Query Objects 加适当索引;需要缓存 → 俄罗斯套娃缓存加片段缓存
- 代码组织:胖模型 → 抽取 Service Objects;复杂验证 → Form Objects;控制器中的业务逻辑 → 移至 services
性能优化矩阵提供问题、解决方案与实现对照:
- N+1 查询 → 预加载 → includes(:association) / preload
- 慢计数 → 计数器缓存 → 关联上 counter_cache: true
- 重复查询 → 片段缓存 → cache @object do 块
- 大数据集 → 分页 → Kaminari / Pagy gems
- 慢 API 响应 → JSON 缓存 → stale? / fresh_when
最佳实践
Rails 7+ 特性方面:Hotwire 优先,在引入 JS 框架前先使用 Turbo/Stimulus;使用 Import Maps 管理 JS 依赖而无需复杂打包器;利用异步查询加载实现并行查询执行;对读密集负载使用只读副本。
代码组织方面:用 Service Objects 抽取控制器业务逻辑;用 Query Objects 封装复杂数据库查询;用 Form Objects 处理复杂表单验证逻辑;用 View Components 创建可复用、可测试的 UI 组件。
性能方面:始终对关联使用 includes/preload 预加载;为关联预计算计数的计数器缓存;实现多级缓存策略;根据查询模式添加数据库索引。
测试方面:对关键用户旅程使用系统测试;隔离测试 View Components;全面测试 API 端点;在单元级别测试业务逻辑。
反模式
架构反模式:胖控制器(控制器中的业务逻辑,应使用 Service Objects 和 POROs);巨型模型(模型承担过多职责,应抽取 concerns);回调面条(复杂回调链,应使用 service objects);瘦控制器胖模型(所有逻辑在模型中,应平衡分布)。
数据库反模式:N+1 查询(未使用预加载,应使用 includes/joins/preload);缺失索引(查询缓慢且无适当索引,应分析并添加);计数器缓存缺失(重复计数查询,应使用计数器缓存);无 down 的迁移(不可逆迁移,应确保可逆性)。
性能反模式:过度预加载(导致内存问题);缺失缓存(无缓存策略,应实现适当层级);渲染膨胀(视图渲染过重,应使用片段和缓存);任务队列积压(无后台任务处理,应使用 Active Job)。
限制
该技能不适用于仅前端开发、数据库专项优化、不涉及 Rails 的纯 API 设计以及仅涉及 DevOps/部署的场景。关于收费、价格、平台等具体信息暂未提供。