Rufo 入门:零配置的 Ruby 代码格式化工具

Rufo 是快速、低配置的 Ruby 代码格式化工具,自动统一缩进、空格与折行。本文讲解 Rufo 的安装、命令行选项、编辑器集成与团队工作流落地。

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

Rufo 是 Ruby 的"纯格式化器":输入任何合法 Ruby 代码,输出风格统一的排版结果,不评判代码质量、几乎无需配置。安装后 rufo . 一键格式化整个项目,配合编辑器保存时自动运行,格式争议从此消失。

Rufo 的设计哲学:少即是多

与 RuboCop 这类"全能裁判"不同,Rufo 只做一件事:把代码排版统一。它不检查方法长度、不管命名、不评价你的写法——只保证缩进、空格、空行、折行符合固定规范。这种克制带来两个好处:配置项极少(团队不用为规则吵架)和速度极快(大代码库秒级完成)。

安装与基本用法

gem install rufo

rufo app/models/user.rb     # 格式化单文件(就地修改)
rufo app/                   # 格式化目录
rufo -x .                   # 只检查不修改(CI 用)
rufo --check .              # 发现未格式化文件返回非零退出码

格式化前后对比:

# 之前
def greet( name )
puts "你好,#{name}"
end

# 之后
def greet(name)
  puts "你好,#{name}"
end

方法定义括号、缩进、操作符间距全部归一——代码语义完全不变,变的只是"长相"。

命令行选项与配置

常用选项:

  • -x / --check:检查模式,不写入文件;
  • --simple-exit:退出码只区分"是否需要格式化";
  • stdin 输入:编辑器集成的标准方式。

.rufo 配置文件支持少量选项(每行一个 key value):引号风格、缩进宽度、链式调用折行策略等。Rufo 刻意保持选项最少——想要精细定制规则就换 RuboCop,Rufo 服务的是"别再讨论格式"的团队。

融入工作流

  • 编辑器:VS Code 装 rufo 插件后保存时自动格式化;RubyMine 配置外部工具同理;
  • Git 钩子:pre-commit 中对暂存的 .rb 文件跑 rufo,杜绝未格式化代码入库;
  • CI:rufo --check . 作为流水线的一步,未格式化即失败;
  • 存量代码:一次性全库格式化后,把该提交加入 .git-blame-ignore-revs,保住 git blame 的可用性。

Rufo 与 RuboCop/Standard 的关系

三者都在"Ruby 格式化"话题下出现,分工是:Rufo 只格式化;RuboCop 格式化 + 风格 + 缺陷检查;Standard 是 RuboCop 的零配置封装。选一个作为项目的唯一格式权威即可混用易冲突。Rufo 适合的场合:只想要排版统一、不想引入规则强制的项目,或给遗留代码快速"洗澡"。

常见问题(FAQ)

Q:Rufo 会改变代码行为吗?

不会。Rufo 只做排版层面的重排(空白、缩进、折行),不增删任何语法元素。格式化前后跑一遍测试套即可放心,这也是格式化工具与"自动修正"类工具的本质区别。

Q:老项目接入 Rufo 的最佳时机?

选择功能迭代相对空闲的窗口,一个独立 PR 完成全库格式化(不要夹杂业务改动),review 只看 CI 测试结果。之后立即启用编辑器保存时格式化,避免新旧风格混杂。

Q:Rufo 对某些语法格式化结果不满意能局部跳过吗?

Rufo 不支持局部禁用注释(这是刻意的设计:格式化权威必须唯一)。实在有手工排版需求的代码块(如对齐的表格数据),改用 RuboCop(支持 # rubocop:disable)是更灵活的选择。


参考文档

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

延伸阅读

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

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

立即开始

选择观测云版本

代码托管平台