Sublime Text 能运行 Ruby 但需手动配置四要素:验证 PATH(用 import os; print(os.environ.get('PATH')))、用 zsh -l -c(macOS/Linux)或硬编码 ruby.exe 绝对路径(Windows)设 Build System、手动绑定 .rb 文件为 Ruby 语法、修正 file_regex 以准确定位错误行。

Sublime Text 能跑 Ruby,但默认什么都不会——它不自动加载你的 shell 环境、不识别 .rb 文件、不解析错误行号、也不管你装的是 rbenv 还是 RubyInstaller。所有“能用”都是你手动拧紧这四颗螺丝的结果。
验证 Sublime 真正看到的 PATH
别信终端里 ruby -v 成功就以为万事大吉。GUI 启动的 Sublime 完全不读 ~/.zshrc 或用户级环境变量,PATH 很可能为空或残缺。
按 Ctrl+` 打开控制台,粘贴运行:
import os; print(os.environ.get('PATH'))
检查输出中是否含以下路径之一:
- macOS Apple Silicon:
/opt/homebrew/bin或/Users/xxx/.rbenv/shims - macOS Intel:
/usr/local/bin - Windows:
C:Ruby32-x64in(注意是反斜杠,且必须出现在输出里)
没出现?后续所有构建配置都无效,先解决环境可见性问题。
macOS/Linux 用登录态 shell 加载 rbenv/rvm
裸写 "shell_cmd": "ruby $file" 在 GUI 下必挂,因为没触发 shell 初始化逻辑。必须让 Sublime 启一个带登录态的 shell,自动 source 你的配置文件。
适配 zsh(macOS Catalina+ 默认):
{
"shell_cmd": "zsh -l -c 'ruby "$file"'",
"file_regex": "^([^:]*?):([0-9]+):(?:[0-9]+)?:?.*",
"selector": "source.ruby",
"encoding": "utf-8"
}
关键点:
-
-l是核心:强制登录态,加载~/.zshrc,rbenv 和 rvm 都能识别 - 单双引号嵌套必须严格:外层双引号,内层单引号包裹命令,
$file用"$file"防空格路径崩 -
file_regex必须匹配 Ruby 实际报错格式(如test.rb:5:in `foo': ...),否则双击错误行跳不到位置
Windows 必须硬编码 ruby.exe 绝对路径
Windows 不支持 zsh -l -c,也没办法让 GUI 进程自动继承终端 PATH。唯一可靠方式是显式指定可执行文件。
{
"cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"],
"file_regex": "^([^:]*?):([0-9]+):(?:[0-9]+)?:?.*",
"selector": "source.ruby"
}
注意细节:
- 反斜杠必须双写:
C:\Ruby32-x64\bin\ruby.exe,否则 JSON 解析失败 - 路径不能含空格:如果 Ruby 装在
C:Program Files,要么重装到无空格路径,要么用mklink /D创建符号链接绕过 - 右键
ruby.exe→ 属性 → “位置”字段才是真实路径,别凭记忆手敲
绑定语法和修正 file_regex 是硬门槛
.rb 文件打开显示 “Plain Text” 不是插件故障,是 Sublime 原生行为——它需要你手动确认一次语义。
操作流程:
- 打开任意
.rb文件 → 右下角点击 “Plain Text” → 选Ruby - 再点右侧弹出的
Open all with current extension as…→ 确认
同样适用于 .erb、.ru 等非标准扩展名:View → Syntax → Ruby on Rails → HTML (Rails),然后设为默认。
file_regex 错配会导致构建失败后只能手动翻行号。Ruby 标准错误输出是 file.rb:12:in `method': …,推荐统一用:
"file_regex": "^([^:]*?):([0-9]+):(?:[0-9]+)?:?.*"
别加 path 字段试图“补 PATH”——它只影响子进程启动时的环境变量,解决不了 shell 初始化缺失这个根本问题。











