SuperAPI AI 工具集

ruby-on-rails-best-practices

编程与开发

查看项目

更新于 10-16 09:33

技能介绍

Ruby on Rails 最佳实践:一组从 Basecamp 生产 Rails 应用(Fizzy 与 Campfire)中提炼的架构模式与编码约定,共 16 条规则,分布在 6 个类别中,聚焦代码组织、可维护性以及遵循带 Basecamp 改良的「Rails 之道」。

适用时机:组织模型、concern 与控制器时;编写后台任务时;用 Turbo Streams 实现实时功能时;决定代码应放置何处时;为 Rails 应用编写测试时;评审 Rails 代码的架构一致性时。

规则概览:

模型组织(高):模型专属 concern 放在 app/models/model_name/ 而非 app/models/concerns/;行为类 concern 用 -able 后缀,功能类 concern 用名词;共享 concern 中用模板方法提供可定制行为。

后台任务(高):同步方法与 _later 变体配对,后者入队任务;任务保持轻薄,仅调用模型方法,逻辑全部放在模型中。

控制器(高):状态变更使用资源控制器而非自定义 action;用类似 CardScoped 的 concern 处理嵌套资源;控制器保持轻薄,直接调用丰富的模型 API,不使用 service object。

请求上下文(中):用 Current(ActiveSupport::CurrentAttributes)承载请求级数据并提供级联 setter;注意 Current 仅在 Web 请求中自动填充,任务、邮件与 channel 需显式设置。

关联与回调(中):根据是否需要父级上下文,在关联扩展与模型类方法间选择;任务用 after_commit,简单操作用内联 lambda。

Turbo 与实时(中):由控制器显式广播,而非回调。

测试(中):使用 fixtures 而非 factories,测试中镜像 concern 结构。

代码组织(低-中):service object 放在模型命名空间下而非 app/services;偏好展开式条件,方法按调用顺序排列。

设计哲学为「Vanilla Rails」:使用 Rails 约定并最小化额外添加。丰富模型、轻薄控制器;无 service object 层;代码就近放置;显式优于隐式;约定优于配置。

原文包含若干用于说明规则的代码示例,实际使用时可参考源页面获取完整示例。除上述内容外,定价、平台与具体安装方式暂未提供。