根本原因是sublime gui启动未加载shell环境变量导致path缺失;需先用import os; print(os.environ.get('path'))验证,再通过zsh -l -c(macos/linux)或硬编码ruby.exe绝对路径(windows)配置build system,并绑定.rb语法及修正file_regex。

Ctrl+B 报 command not found: ruby 怎么办
这不是 Ruby 没装好,是 Sublime GUI 启动时压根没加载你的 shell 环境变量(比如 ~/.zshrc),PATH 里根本没 ruby 路径——所有后续配置都得建立在这一步验证通过之后。
先验证:按 Ctrl+` 打开控制台,运行:import os; print(os.environ.get('PATH'))
检查输出里有没有你的 Ruby 路径,例如:
• macOS Apple Silicon:/opt/homebrew/bin 或 /Users/xxx/.rbenv/shims
• Windows:C:Ruby32-x64in(注意是反斜杠,且必须在「系统环境变量」中)
- macOS/Linux 推荐用登录态 shell 加载:
"shell_cmd": "zsh -l -c 'ruby "$file"'"(-l触发~/.zshrc加载,"$file"防含空格路径崩) - Windows 必须硬编码绝对路径:
"cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"](反斜杠双写,路径不能含空格) - 别信
path字段能“补 PATH”——它只影响子进程,解决不了 shell 初始化缺失
.rb 文件打开还是 Plain Text
Sublime 默认不自动绑定 .rb 扩展名,不是插件问题,是语法识别没触发。首次打开时右下角显示 “Plain Text”,说明编辑器根本没把它当 Ruby 处理。
- 临时解决:打开任意
.rb文件 → 点右下角语言名(如Plain Text)→ 选Ruby - 永久绑定:切换后,点击右侧出现的
Open all with current extension as…,输入rb确认 - Sublime Text 4 自带 Ruby 语法支持,不用额外装旧版插件;但
.erb、.haml等需单独绑定或装对应插件
构建输出双击跳不到错误行
双击报错信息没反应,基本是 file_regex 没配对 Ruby 实际错误格式。Ruby 标准错误形如:test.rb:5:in `foo': undefined method `bar' (NoMethodError),默认正则会漏掉文件名里的冒号(比如 Windows 路径 C:.rb)。
- 必须加这个字段,否则构建失败后只能手动翻行号
- 推荐正则:
"file_regex": "^([^:]*):([0-9]+):?([0-9]*)"(匹配文件名、行号、可选列号) - 别用默认的
^.*?:(d+):?(d+),它无法处理C:这类含冒号的路径
想用 bundle exec 却 require 报错
Sublime 默认只调裸 ruby,不走 bundle exec,所以即使项目有 Gemfile,require 'rspec' 这类语句也会失败。
- 修改构建系统:
"shell_cmd": "cd "${file_path}" && bundle exec ruby "${file}""(&&前后不能有空格,Windows 用户需换&或改用批处理) - 如果项目没装 Bundler,或不想强依赖
bundle exec,就别加这层——否则一开文件就报Could not locate Gemfile - Sublime 构建系统不支持条件判断,没法自动检测
Gemfile再决定是否执行bundle exec,硬要“智能”反而容易出错
最易被忽略的是:GUI 启动的 Sublime 不继承 shell 环境,哪怕你 which ruby 输出再漂亮,它也看不见——所以验证 PATH 是第一步,不是最后一步。











