用途:这是一套从 Basecamp 生产 Rails 应用(Fizzy、Campfire)提炼的架构模式与编码约定,共 16 条规则、6 个类别,用于在编写、审查或重构 Rails 代码时保持架构一致性。适用场景包括组织模型与 concern、编写后台任务、用 Turbo Streams 实现实时功能、决定代码放置位置、编写测试以及代码审查。
主要能力与规则要点:模型组织方面,模型专属 concern 放在 app/models/model_name/ 而非 app/models/concerns/;行为类 concern 用 -able 后缀,功能类用名词;共享 concern 用模板方法提供可定制行为。后台任务方面,同步方法配 _later 变体入队,任务保持精简、只调用模型方法。控制器方面,状态变更用资源控制器而非自定义 action,用 CardScoped 等 concern 处理嵌套资源,控制器保持精简、直接调用模型 API,不引入 service object 层。请求上下文用 Current 保存请求级数据并支持级联 setter,但 Current 仅在 Web 请求中自动填充,任务、邮件和 channel 需显式设置。关联与回调方面,按是否需要父级上下文选择关联扩展或类方法,任务用 after_commit、简单操作用内联 lambda。Turbo 广播由控制器显式调用而非回调。测试使用 fixtures 而非 factories,并镜像 concern 结构。代码组织上,service object 放在模型命名空间下,偏好展开式条件判断、按调用顺序排列方法。
使用方式:资料未提供具体安装命令或调用方式,仅以规则文件(如 @rules/model-scoped-concerns.md)形式组织,需按各规则文档参考。
限制:资料未说明支持的 Rails 版本、依赖或收费情况,暂未提供。