Sublime Text 通过配置 Build System 可运行 Ruby 脚本,无需插件;需确保系统已安装 Ruby 并加入 PATH,再创建 JSON 格式的 Ruby.sublime-build 文件,指定 ruby 命令路径、工作目录及错误正则匹配,并注意 GUI 启动时 shell 环境未加载导致的命令不可见问题。

Sublime Text 本身不内置 Ruby 运行支持,但通过配置 Build System 可以直接编译运行 Ruby 脚本——关键不是“装插件”,而是让 Sublime 知道怎么调用系统里的 ruby 命令。
确认系统已安装 Ruby 并可用
Sublime 不管你有没有 Ruby,它只负责执行命令。如果 ruby --version 在终端报错或提示 command not found,Sublime 的构建系统一定失败。
-
macOS:检查是否通过 Homebrew 安装(
brew install ruby),注意 Apple Silicon 机器可能默认用的是 /opt/homebrew/bin/ruby,而非 /usr/bin/ruby - Windows:确认 RubyInstaller 的 bin 目录(如
C:\Ruby31-x64\bin)已加入系统PATH - Linux:多数发行版自带 Ruby,但常是旧版本;建议用
rbenv或rvm管理,确保which ruby输出路径有效
创建自定义 Ruby 构建系统
Sublime 的构建系统本质是 JSON 配置文件,告诉编辑器用什么命令、在什么目录下执行脚本。默认的 Ruby 构建系统(如果存在)往往不带参数传递或工作目录控制,容易出错。
操作路径:Tools → Build System → New Build System,粘贴以下内容并保存为 Ruby.sublime-build:
{
"cmd": ["ruby", "$file"],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"working_dir": "$file_path",
"selector": "source.ruby",
"encoding": "utf-8",
"variants": [
{
"name": "Run with args",
"cmd": ["ruby", "$file", "$args"]
}
]
}
-
$file是当前打开的 Ruby 文件全路径;$file_path是其所在目录,确保 require 相对路径能正确解析 -
file_regex支持点击错误行跳转,正则匹配标准 Ruby 报错格式(如test.rb:5:in `foo': undefined method) - 加了
Run with args变体后,可按Ctrl+Shift+B(Windows/Linux)或Cmd+Shift+B(macOS)选该选项,再输入参数(如hello world)
常见构建失败原因与修复
按下 Ctrl+B 没反应、黑框一闪而过、或报 /bin/sh: ruby: command not found,基本都卡在这几个点:
- Sublime 在非登录 shell 下启动(尤其 macOS GUI 方式打开时),不会加载
~/.zshrc或~/.bash_profile,导致ruby命令不可见 → 解决方法:用绝对路径替换"cmd"中的ruby,例如"/opt/homebrew/bin/ruby"或"C:\\Ruby31-x64\\bin\\ruby.exe" - 脚本含中文或特殊字符,且系统编码与 Sublime 不一致 → 在构建系统中显式指定
"encoding": "utf-8"(已写在上面示例中) - 用了 Bundler 管理依赖(如
require 'sinatra'),但没在构建中执行bundle exec ruby→ 单独建一个Ruby-Bundle.sublime-build,把cmd改成["bundle", "exec", "ruby", "$file"],并确保working_dir正确指向 Gemfile 所在目录
不需要额外插件也能调试简单脚本
Sublime 没有原生调试器,但你可以靠 puts + 快捷构建快速验证逻辑。如果真需要断点调试,别折腾插件兼容性,直接用 pry-byebug 或 VS Code + Ruby Extension 更可靠。
真正容易被忽略的是:每次修改构建系统后,必须手动切换一次构建方案(Tools → Build System),否则 Sublime 仍用旧缓存。另外,$args 变体只接受空格分隔的字符串,无法传含空格的参数(如 "hello world"),这时得改用 shell 封装或直接终端运行。










