Sublime Ctrl+B报“command not found: ruby”是因GUI启动未加载shell配置导致PATH缺失;需先用import os; print(os.environ.get('PATH'))验证Ruby路径是否存在,再通过zsh -l -c(macOS/Linux)或硬编码ruby.exe绝对路径(Windows)配置Build System,并手动绑定.rb文件语法及设置正确file_regex。

Ctrl+B报command not found: ruby,先看PATH有没有被Sublime看见
这不是Ruby没装好,是Sublime GUI启动时压根没加载你的shell配置(比如~/.zshrc),导致PATH里没有ruby所在路径。别猜,直接验证:
- 按
Ctrl+`打开Sublime控制台 - 输入
import os; print(os.environ.get('PATH')) - 检查输出是否含你的Ruby路径:macOS Homebrew用户看有没有
/opt/homebrew/bin,rbenv用户找/Users/xxx/.rbenv/shims,Windows用户确认C:Ruby32-x64in是否在其中
如果没出现,后续所有Build System配置都白搭——环境变量不对,命令就找不到。
Build System必须用登录态shell或硬编码路径
裸写"shell_cmd": "ruby $file"在GUI下基本必挂。关键是要让shell初始化逻辑生效,否则rbenv/rvm版本切换、PATH补全全失效:
- macOS/Linux(zsh用户):
"shell_cmd": "zsh -l -c 'ruby "$file"'"——-l触发登录态,自动source~/.zshrc - macOS/Linux(bash用户):
"shell_cmd": "bash -l -c 'ruby "$file"'" - Windows:
"cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"]——反斜杠必须双写,路径不能含空格(如C:Program Files会静默失败) - rbenv用户想保持版本灵活:
"shell_cmd": "/Users/xxx/.rbenv/shims/ruby "$file""——写绝对路径,~不会被解析
别用Tools → Build With → Ruby默认项,它早已失效;也别依赖path字段补PATH,不如直接让shell自己加载。
.rb文件打开还是Plain Text?手动绑定一次就永久生效
这不是插件问题,是Sublime原生行为:它默认只认.rb扩展名,但首次打开时可能仍显示为Plain Text。解决方式极简:
- 打开任意
.rb文件 → 点右下角语言名(如Plain Text)→ 选Ruby - 点击右侧弹出的
Open all with current extension as…
之后所有.rb文件都会自动高亮、缩进、匹配括号。自定义扩展名(如.ru、.rake)也要同样操作,在View → Syntax → Open all with current extension as…里单独绑定。
错误行双击跳不进去?file_regex不匹配Ruby实际输出格式
Ruby标准错误格式是test.rb:5:in `foo': undefined method `bar' (NoMethodError)。如果file_regex不匹配,双击就无效,只能手动翻行号:
- 推荐用:
"file_regex": "^([^:]*?):([0-9]+):(?:[0-9]+)?:?.*" - 别漏掉这个字段——它是构建失败后能否精准定位的关键
- 旧式写法
"file_regex": "^([^:]*):([0-9]+):?([0-9]*)"在某些Ruby版本下会因冒号后空格或额外信息失效
复杂点在于:Ruby错误格式看似稳定,但不同版本、不同Gem(比如pry-byebug)可能插入额外字段,file_regex得留足容错空间;而一旦配错,你每次调试都得多花10秒手动翻行号——这点最容易被忽略。


















