用途:在编写、审查 Ruby on Rails 代码或做架构决策时,套用 37signals/DHH 的约定。核心理念是「原生 Rails 已足够」,最大化利用框架自带能力,尽量减少依赖,非必要不引入抽象。
主要能力与约定:
- 富领域模型优先于服务对象;控制器保持精简,只做编排与响应格式化;业务逻辑放在模型。
- 一切皆 CRUD:用新资源代替自定义 action,例如用 resource :closure 的 POST/DELETE 表示关闭与重开。
- 状态用记录而非布尔列,如 Closure、Pin、Watch,可自带时间戳、操作者与作用域。
- 大量使用 Concern 做横向代码共享,每个 concern 自带关联、scope 与方法。
- 依赖取舍:使用 Rails edge、turbo-rails、stimulus-rails、importmap-rails、propshaft、solid_queue、solid_cache、solid_cable、geared_pagination、bcrypt、rqrcode、redcarpet;避免 devise、pundit/cancancan、dry-rb、interactor、view_component、sidekiq/redis、graphql。
- 认证为自建约 150 行的免密码魔法链接方案,含 Session、MagicLink 与 Bearer token。
- 视图用 ERB partial 与 Turbo Streams,Stimulus 控制器保持单一职责、约 50 行。
- 后台任务浅层化,任务只调用模型方法,用 _later/_now 命名约定,Solid Queue 由数据库支撑,无需 Redis。
- 数据库用 UUID 主键,每个模型带 account_id 做多租户,URL 形如 /{account_id}/boards/...,不使用外键约束。
- CSS 用原生 CSS 与级联层、OKLCH 变量,不用 Sass、PostCSS 或 Tailwind。
- 测试用 request specs 与 fixtures,功能与测试同一提交发布。
使用方式:作为编码与评审时的风格参照,按上述约定组织模型、控制器、路由、视图与任务。
限制:资料未提供该规范的安装命令、版本要求、收费方式或平台支持信息,暂未提供。