用途:该技能提供 37signals(Basecamp、HEY、Fizzy)实践的 Rails 编码原则与约定,在编写控制器、模型、视图,决定使用 gem 还是原生 Rails,设计状态与数据库结构,配置后台任务、缓存或实时功能,评审代码风格,或向富领域模型重构时参考。
主要能力:分 8 类共 56 条规则并按优先级排列。架构基础(关键):富领域模型优于服务对象、原生 Rails 足够、刻意回避的模式与 gem、三次法则后再抽象、先自建再选 gem、先简单后复杂、领域模型作为内部复杂性的门面、单一业务逻辑层、自定义无密码认证优于 Devise。控制器与 REST(关键):仅 CRUD 控制器、将非 CRUD 操作建模为独立资源、瘦控制器、params.expect() 校验参数、控制器 concern、用 scope module 嵌套资源。领域建模(高):concern、normalizes 宏、store_accessor、delegated_type、计数器缓存、touch 链、回调处理辅助复杂性、多态事件模型、PORO 命名空间。状态管理(高):用记录而非布尔列、状态转换时间戳、枚举、数据库约束优于校验、写入时计算。数据库与基础设施(高):一切数据库支撑、Solid Queue/Cable/Cache、基于路径的多租户与 Current.account、UUID 主键、无外键约束。视图与前端(中):Turbo Frames、Turbo Streams、Stimulus targets、Stimulus 设计、用 helper 取代 partial、渐进增强、片段缓存、HTTP 缓存(fresh_when 与 ETag)。代码风格(中):展开式条件、按调用顺序排列方法、正向命名、命名反映返回值、可见性修饰符、仅在存在非 bang 方法时用 bang、异步用 _later 与 _now 后缀。测试(中):Minitest 优于 RSpec、fixtures 优于 FactoryBot、避免测试导致的设计损伤、集成测试优于系统测试、测行为而非实现。
使用方式:技能附带 metadata.json 和模板,参考资料分文件存放;具体用法、安装命令与逐条代码示例在原始资料中未提供。
适用场景:Rails 应用开发、代码评审、架构决策、重构、前后端模式选型。
限制:原文未说明安装方式、平台要求、许可或额外依赖,相关细节暂未提供。