用途:为 Rails 项目提供一套有主见的代码模式与约定,目标是写出干净、可维护的代码,风格遵循 rubocop-rails-omakase。
核心哲学:重复优于复杂,简单的重复代码胜过复杂的 DRY 抽象;可测试性等于质量,难以测试说明结构需要重构;增加控制器不是坏事,让控制器变复杂才是坏事。
主要能力与约定: Turbo Streams:简单操作必须在控制器内联,例如 render turbo_stream: [...],不要为简单操作单独建 .turbo_stream.erb 文件。 控制器与 Concern:业务逻辑放在模型或 concern,不放在控制器;concern 用 ActiveSupport::Concern,可定义 scope 与 class_methods。 服务抽取:出现复杂业务规则、编排多个模型、外部 API 交互、可跨控制器复用逻辑中的多项时才抽取;服务应只有一个公开方法,按职责命名空间,构造函数接收依赖,返回数据结构而非领域对象。 现代 Ruby 风格:哈希简写、安全导航、||=、关键字参数。 枚举与作用域:用冻结数组加 validate: true 定义 enum;scope 用 .present? 守卫并保持可链式,filtered 方法可 rescue ArgumentError 返回 all。 错误处理:定义领域专用错误类;记录带上下文的日志后重新抛出。 测试:Minitest + fixtures,行为驱动,用 fixtures 做 setup,mock 外部依赖,操作后 .reload 验证状态,提供辅助方法。 命名:遵循 5 秒规则,避免 show_in_frame、process_stuff 这类难懂命名。 JavaScript 与 Importmap:Rails 7+ 用 importmap 管理 JS 依赖,依赖范围尽量窄;区分公共入口与 admin 入口,admin 专用库不要加入 application.js;新增依赖时先确定范围,再 pin 并导入正确入口。 性能:考虑规模影响,不做过早缓存,保持简单,索引会拖慢写入,仅在需要时添加。
使用方式:资料未提供具体安装命令或引入步骤,暂未提供。
适用场景:使用 Rails 并希望统一代码风格、改善可测试性与可维护性的团队与个人开发者。
限制:这是一套约定与模式集合,非可执行工具;具体安装、配置与版本要求暂未提供。