Sublime Text 本身不自带 Ruby 运行环境,仅调用系统已安装的 ruby 命令;需先确认终端中 ruby -v 正常输出版本号,再通过 Build System 配置 cmd、selector、file_regex 等字段,并确保 PATH 可见或显式指定 ruby 路径。

Sublime Text 本身不自带 Ruby 运行环境,但可以通过 Build System 快速调用系统已安装的 ruby 命令执行脚本——前提是你的终端里 ruby -v 能正常输出版本号。
确认 Ruby 已正确安装并可用
这是最关键的前置条件。Sublime Text 的构建系统只是个“指挥员”,它不会帮你装 Ruby,只负责调用你系统 PATH 里的 ruby 可执行文件。
- 打开终端(macOS/Linux)或命令提示符/PowerShell(Windows),运行
ruby -v;如果报错'ruby' is not recognized或类似提示,说明 Sublime 一定跑不起来 Ruby 脚本 - macOS 用户若用
rbenv或RVM管理 Ruby 版本,要确保当前 shell 中ruby是激活状态(rbenv version应显示非 system 版本,且which ruby指向 rbenv 路径) - Windows 用户注意:若用 RailsInstaller 或 MSYS2 安装 Ruby,需确认其 bin 目录(如
C:\RailsInstaller\Ruby3.1.0\bin)已加入系统PATH环境变量
创建 Ruby Build System(支持 .rb 文件一键运行)
Sublime Text 的构建系统本质是 JSON 配置,告诉编辑器“用什么命令、在哪儿、怎么跑”。对 Ruby 来说,最简配置只需调用 ruby 解释器。
- 菜单栏选择
Tools → Build System → New Build System… - 清空默认内容,粘贴以下配置(注意:Windows 用户把
"shell": true改成false,否则可能报错):
{
"cmd": ["ruby", "$file"],
"file_regex": "^(...*?):([0-9]+):([0-9]+):? (.*)$",
"working_dir": "$file_path",
"selector": "source.ruby",
"encoding": "utf-8",
"shell": true
}
-
"selector": "source.ruby"表示该构建系统仅对.rb文件自动激活;保存时建议命名为Ruby.sublime-build - 保存后,通过
Tools → Build System手动选中它,或让 Sublime 自动识别(打开.rb文件后按Ctrl+B即可运行) - 如果脚本报错找不到 gems(比如
require 'sinatra'失败),说明当前ruby进程没加载你项目里的Gemfile—— 这不是 Build System 的问题,而是环境隔离导致的,见下一条
让 Build System 加载 Bundler 环境(解决 gem 找不到问题)
纯 ruby $file 不会自动执行 bundle exec,所以即使项目根目录有 Gemfile,直接运行也会报 LoadError。你需要显式调用 bundle exec ruby。
- 修改上面的
"cmd"行为:
"cmd": ["bundle", "exec", "ruby", "$file"]
- 但要注意:
bundle命令必须在项目根目录下才有效。因此"working_dir"必须设为项目根路径,不能只用$file_path(它只是文件所在目录,不一定是Gemfile所在处) - 更稳妥的做法是:把
"working_dir"改成"${project_path:${folder}}",前提是已通过Project → Save Project As…保存了项目(即存在.sublime-project文件) - 如果你不想依赖项目文件,也可以硬编码路径,比如
"working_dir": "/Users/you/my-rails-app",但失去通用性
调试输出中文乱码(特别是 Windows)
Windows 默认控制台编码是 cp936(GBK),而 Ruby 脚本多为 UTF-8 编码,直接运行会导致中文 print 出现乱码或崩溃。
- 最简单办法:在 Build System 配置里加一行
"encoding": "utf-8"(上面示例已包含) - 但仅此不够。还需确保终端能正确渲染 UTF-8 —— Windows 10/11 用户可在 PowerShell 中执行
chcp 65001切换编码,但这对 Sublime 的构建进程无效 - 真正有效的方案是改用
cmd /c包裹命令,并显式设置代码页:
"cmd": ["cmd", "/c", "chcp", "65001", "&&", "ruby", "$file"]
- 注意:此时
"shell": true必须保留,否则&&不生效 - 这个写法会让 Sublime 在 cmd 窗口中运行 Ruby,并强制使用 UTF-8 编码,中文输出就正常了
真正麻烦的点不在配置本身,而在 Ruby 环境的“可见性”——Sublime Text 启动时继承的是系统登录用户的环境变量,但它不会重新加载你 shell 配置文件(如 ~/.zshrc)里定义的 rbenv 或 RVM 初始化逻辑。所以即使你在终端里 ruby -v 正常,Sublime 里仍可能调到系统 Ruby。解决方法只有两个:要么把 rbenv/rvm 的 shims 路径硬塞进系统 PATH,要么改用命令行启动 Sublime(subl .),让它继承当前 shell 环境。











