StandardRB 入门:零配置的 Ruby 代码风格终结者

StandardRB 是"零配置"的 Ruby 代码格式化工具,基于 RuboCop 固化一套无争议规则。本文讲解其安装、自动修正、编辑器与 CI 集成,以及老项目的接入策略。

最佳实践
红宝石与应用开发工作台插画

StandardRB(standard gem)是 RuboCop 的零配置封装:规则固定、不可争论,standardrb --fix 自动修正全部风格问题。它终结了"团队风格指南怎么定"的无尽讨论——不接受定制就是最大的特性,换来全社区一致的代码面貌。

为什么零配置是卖点

RuboCop 有几千种配置组合,团队为了"字符串用单引号还是双引号"能开一个下午的会。StandardRB 的洞察是:风格的价值在于统一,而不在于选哪个。它固化了社区最佳实践(双引号、两空格缩进、尾逗号等),配置选项刻意为零——从采用那天起,风格讨论永久关闭。

安装与使用

gem install standard

standardrb                # 检查全项目
standardrb --fix          # 自动修正
standardrb app/models     # 指定目录

输出即 RuboCop 风格:文件、位置、规则名一目了然。--fix 安全地自动修正几乎所有问题,剩下的(如 Metrics 复杂度警告)需要人工重构。

融入工作流

  • 编辑器:VS Code 的 Ruby LSP 插件原生支持 Standard(设置 "rubyLsp.formatter": "standard"),保存时自动格式化;
  • Git 钩子:pre-commit 运行 standardrb --fix 于变更文件;
  • CI:standardrb 无修复运行,违规即失败。

与 RuboCop 的关系与有限定制

StandardRB 底层就是 RuboCop + 一套固定配置,rubocop 生态的扩展(standard-rails 等)可以叠加。它支持极少量"逃生通道":.standard.yml 里可以 ignore 特定文件/规则(供老项目过渡)、指定 Ruby 版本——但不能改规则本身,这是不可触碰的设计红线。

老项目接入策略

standardrb --fix                 # 一次性全库修正(独立 PR,不夹业务改动)
standardrb --generate-todo       # 对无法自动修正的存量生成豁免清单

提交 todo 文件后 CI 即刻转绿:存量冻结、新增必须合规。把格式化大提交加入 .git-blame-ignore-revs,保住 git blame 的可用性。

常见问题(FAQ)

Q:StandardRB 和 RuboCop 怎么选?

团队没有强烈的风格传统、认可"统一优于个性"选 StandardRB;已有成文风格指南、或历史代码风格与新规则冲突太大无法一次性修正选 RuboCop 自定义。两者都是好答案,坏答案是"什么都不用"。

Q:规则更新了会不会突然报新错?

会。StandardRB 版本升级可能引入新规则导致 CI 失败——用 Gemfile.lock 锁定版本,升级时作为一个独立变更处理(跑 --fix 或更新 todo 文件),不要让它混进业务 PR。

Q:团队有人就是不喜欢某条规则怎么办?

这是 StandardRB 的设计前提:个人偏好让位于集体一致性。实践中两周后没人再记得争论过什么——正如 gofmt 在 Go 社区证明的那样,"没得选"最终会让所有人轻松。


参考文档

本文依据公开文档整理,示例需按项目依赖版本验证;不将文档中的性能描述视为本项目实测结果。

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台