sublime text运行ruby需三步:正确配置path使ruby命令可达、设置ruby构建系统、绑定.rb文件语法高亮;否则ctrl+b会静默失败或报错。

Sublime Text 本身不带 Ruby 解释器,所谓“配置环境”就是让它能调到你系统里已装好的 ruby 命令、正确识别 .rb 文件、并把错误行定位准——三件事没做全,Ctrl+B 就会静默失败或报错。
为什么终端能跑 ruby -v,但 Sublime 按 Ctrl+B 却提示 command not found: ruby
GUI 启动的 Sublime 不加载你的 shell 配置(比如 ~/.zshrc),所以看不到 rbenv、rvm 或 Homebrew 注入的 PATH。Windows 则常因安装时没勾选「Add Ruby to PATH」,或只加到了用户变量而非系统变量。
- 验证方式:在 Sublime 里按
Ctrl+`打开控制台,输入import os; print(os.environ.get('PATH')),看输出里有没有ruby所在路径(如/opt/homebrew/bin或C:Ruby32-x64in) - macOS/Linux 快速验证:用终端启动 Sublime,执行
subl(前提是已配置好 shell 别名),它会继承当前 shell 环境 - Windows 必须手动把 Ruby 的
bin目录(如C:Ruby32-x64in)加进「系统环境变量」PATH,然后彻底关闭并重启 Sublime
怎么写一个靠谱的 Ruby Build System(Ruby.sublime-build)
别用默认的 Tools → Build With → Ruby,那是过时硬编码;也别裸写 "shell_cmd": "ruby $file"——它依赖环境变量,GUI 下大概率失效。
- macOS/Linux 推荐用登录 shell 加载环境:
{ "shell_cmd": "zsh -l -c 'ruby "$file"'", "file_regex": "^(*?):([0-9]*):?([0-9]*)", "selector": "source.ruby" }(注意:用zsh而非bash,因 macOS Catalina+ 默认 shell 是 zsh) - Windows 必须显式指定
.exe全路径:{ "cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"], "file_regex": "^(*?):([0-9]*):?([0-9]*)", "selector": "source.ruby" }(反斜杠要双写,路径含空格会崩) - 如果用
rbenv,且想保持版本切换灵活,别写死/Users/xxx/.rbenv/versions/3.2.2/bin/ruby,改用 shims 路径:"shell_cmd": "/Users/xxx/.rbenv/shims/ruby "$file""(注意写绝对路径,~不会被解析)
.rb 文件打开后全是白底黑字,没有语法高亮
这不是插件问题,是 Sublime 根本没把文件当 Ruby 处理。它默认只对 .rb 扩展名做绑定,但首次打开时可能仍显示为 Plain Text。
- 手动设置:打开任意
.rb文件 → 点右下角语言名(如Plain Text)→ 选Ruby - 永久绑定:点完
Ruby后,再点右侧出现的Open all with current extension as…,这样所有.rb文件下次都会自动用 Ruby 语法 - 非标准扩展名(如
.ru、.rake)需单独绑定,方法同上,在对应文件里右下角切换并选Open all with current extension as… - Sublime Text 4 自带 Ruby 支持,不用额外装 Package Control 里的旧版 Ruby 包
运行时报错位置不对,或中文输出乱码
file_regex 写错会导致跳转不到报错行;Windows 下中文乱码则多因 Sublime 构建输出用 GBK 解码,而 Ruby 默认 UTF-8。
- 确保
file_regex是:"^(*?):([0-9]*):?([0-9]*)"(不是^.*?:([0-9]*):([0-9]*),开头不能漏*) - Windows 中文脚本必须在文件首行加
# encoding: utf-8,且文件保存为 UTF-8(无 BOM) - 相对路径
require './lib/foo'在 Sublime 下容易失败——它的工作目录默认是项目根,不是文件所在目录;临时解法是加$LOAD_PATH ,长期建议统一用 <code>bundle exec ruby并配"shell_cmd": "cd "${project_path:.}" && bundle exec ruby "$file""
最易被忽略的一点:Sublime 的构建系统不自动保存文件。改完代码没按 Ctrl+S,Ctrl+B 运行的还是磁盘上的旧版本。SaveOnBuild 插件能解决,但得手动装;没有它时,养成“改完先存再构建”的习惯更实际。











