关于 ruby-rails
面向构建和维护 Rails 应用的 Ruby 与 Ruby on Rails 开发技能。涵盖框架约定、数据访问、前端模式、安全、测试、性能及 Rails 8 默认方案。
主要功能
- 01惯用 Ruby 与 Rails 约定
- 02ActiveRecord 和数据库性能模式
- 03Rails 8 内置服务默认方案
- 04Hotwire 与响应式界面建议
- 05安全与授权实践
- 06Minitest 和 RSpec 测试建议
适用场景
- 01按框架约定生成 Rails 文件
- 02避免数据库应用中的 N+1 查询
- 03选择 Rails 8 后台任务与缓存默认方案
- 04规划安全功能和测试覆盖
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mindrally/ skills --skill ruby-rails安装后在 Claude Code 中输入/ruby-rails确认已加载。
详细介绍
Ruby on Rails
此技能涵盖 Ruby 和 Ruby on Rails 开发,包括 Rails 约定、ActiveRecord 模式、前端集成、安全和测试。
核心原则
- 编写简洁、符合 Ruby 惯例的代码,并提供准确的示例
- 遵循 Rails 约定(约定优于配置)
- 遵循 Ruby Style Guide,确保格式一致
- 利用 Ruby 3.x 的特性,例如模式匹配和无
end方法 - 优先使用 Rails 命令行生成器(
bin/rails generate ...),而不是手写样板代码——生成器能让文件符合框架约定,并自动配置测试和路由 - 使用
bin/dev运行本地开发服务器(它会启动 Web 进程以及所有已配置的观察器),并在重大更改后检查日志
命名约定
- 文件、方法和变量使用 snake_case
- 类和模块使用 CamelCase
- 遵循 Rails 对模型、控制器和视图的命名约定
架构与性能
- 使用 ActiveRecord 执行数据库操作,并设置适当的索引
- 在生产环境中使用 PostgreSQL,并设置适当的索引和连接池,同时确保迁移安全且可逆
- 使用预加载,避免 N+1 查询问题
- 使用片段缓存和 Russian Doll 缓存策略
- 对复杂业务逻辑使用服务对象
- 严格遵循 MVC 架构
- 保持控制器符合 RESTful 风格,职责聚焦
Rails 8 默认配置
Rails 8 自带一套「无需 PaaS」的技术栈——除非有明确理由,否则优先使用这些内置功能,而不是添加外部服务:
- Solid Queue — 基于数据库的 ActiveJob 适配器;将其用作默认后台任务后端,除非任务量或功能需求(例如 Sidekiq Pro 批处理)要求部署 Redis/Sidekiq
- Solid Cache — 基于数据库的缓存存储;无需单独部署 Redis/Memcached,即可作为 Rails.cache 的合理默认选项
- Solid Cable — 基于数据库的 Action Cable 适配器,无需 Redis 即可支持 WebSocket
- Propshaft — 默认的资源管线;比 Sprockets 更简单,无需打包步骤,只需提供带指纹的文件
- Kamal — 默认的部署工具,用于将容器化 Rails 应用部署到自己的服务器
前端与 UI
- 使用 Hotwire(Turbo 和 Stimulus)实现常规 Rails 交互和动态交互,无需完整页面重新加载
- 仅在确实需要由 npm 管理的 JavaScript(React/Vue 组件、复杂打包)时,才采用由 Vite 管理的 JS 管线(例如 vite_rails)——不要默认添加
- 使用 Tailwind CSS 进行响应式设计
- 通过辅助方法和局部视图保持视图 DRY
- 使用 ViewComponents 构建可复用的 UI 组件
安全
- 使用 Devise 或 Pundit 实现身份验证和授权
- 在控制器中使用强参数,防止批量赋值漏洞
- 适当清理用户输入
- 使用 CSRF 保护令牌
- 实施恰当的会话管理
测试
- 遵循 TDD 实践,为模型、控制器和集成流程编写全面的 Minitest 或 RSpec 测试
- 使用 FactoryBot 生成测试数据,而不是使用 fixtures
- 对外部服务进行模拟,并为预设返回值创建存根
- 对不同上下文中的常见行为使用共享示例
- 确保每项测试相互独立,避免测试之间共享状态
最佳实践
- 保持控制器精简、模型充实(但不要过度臃肿)
- 使用 concerns 复用共享功能
- 使用 Sidekiq 或 ActiveJob 实现后台任务
- 使用规范的数据库迁移
- 遵循 RESTful 路由约定
评论
支持 Markdown