Sublime Text 配置 Ruby 环境本质是三件事:调用系统 ruby 命令、正确识别 .rb 文件语法、定位错误行;终端能运行但 Ctrl+B 报错因 GUI 不加载 shell 配置(如 ~/.zshrc),导致 PATH 缺失,需用 bash -l -c 或写死路径配置 Build System,并手动绑定非标准扩展名语法。

Sublime Text 本身不管理 Ruby 运行时,也不自动识别 .rb 文件 —— 所谓“配置 Ruby 环境”,本质是三件事:让 Sublime 能调到你系统里的 ruby 命令、让文件正确高亮为 Ruby、让构建输出能定位错误行。其余都是锦上添花,不是必须。
为什么终端能跑 ruby -v,但 Sublime 按 Ctrl+B 报 /bin/sh: ruby: command not found
根本原因是:Sublime GUI 启动(比如双击图标)不加载你的 shell 配置文件(~/.zshrc、~/.bash_profile 或 ~/.zprofile),也就读不到 rbenv init 或 rvm use 注入的 PATH。
- Mac 用户可在 Sublime 控制台(
View → Show Console)运行import os; print(os.environ.get('PATH')),检查输出里有没有/opt/homebrew/bin(Apple Silicon)或/Users/xxx/.rbenv/shims(需写成绝对路径,不能用~) - Windows 用户要确认
ruby.exe所在目录(如C:Ruby32-x64in)已加入「系统环境变量」PATH,而非仅「用户变量」 - 别指望 Build System 的
path字段能“补”进 shell 初始化缺失 —— 它只影响子进程环境变量,不解决登录态缺失问题
Build System 怎么配才不会卡死或静默失败
Build System 是单次执行器,只适合 ruby script.rb 这类短命脚本;配 rails server 或 pry 必然卡住、无法终止、端口占着不放。
- macOS/Linux 推荐写法(兼容
rbenv/rvm):{ "shell_cmd": "bash -l -c "ruby '$file'"", "file_regex": "^(*?):([0-9]*):?([0-9]*)", "selector": "source.ruby", "encoding": "utf-8" }其中bash -l -c启动登录态 shell,能加载~/.zshrc;macOS Catalina+ 默认用zsh,可把bash换成zsh - Windows 必须写死路径:
{ "cmd": ["C:\Ruby32-x64\bin\ruby.exe", "$file"], "file_regex": "^(*?):([0-9]*):?([0-9]*)", "selector": "source.ruby" }注意双反斜杠转义,且路径不能含空格(否则静默失败) - 文件未保存就按 Ctrl+B?执行的仍是磁盘旧版本;装
SaveOnBuild插件可自动保存后构建
.erb、.ru、.rake 文件语法高亮失效怎么办
Sublime 对非标准扩展名识别松散,常被当成纯文本 —— 不是插件没装,而是没手动绑定语法。
- 打开文件 →
View → Syntax → Ruby on Rails → HTML (Rails)(对应.erb)或Ruby(对应.ru、.rake) - 右键编辑区底部的语法名 →
Set Syntax as Default for this Extension,输入erb或ru确认 -
.slim或.haml需额外装插件(如Slim或Haml),装完记得重启 Sublime
最易被忽略的一点:Sublime 的构建工作目录默认是项目根目录,不是当前文件所在目录。所以 require_relative '../lib/foo' 在终端能跑,在 Sublime 构建里可能报 LoadError —— 解决方案不是改路径,而是用 bundle exec ruby 并确保 Gemfile 存在,或者显式加 $LOAD_PATH 。

















