sublime怎么运行ruby_sublime配置ruby环境【教程】

2次阅读

sublime Text 运行 ruby 报 command not found: ruby 的根本原因是构建系统不继承 shell 环境的 PATH;需手动配置 Ruby 路径、Bundler 支持及 UTF-8 编码,且无法自动检测 Gemfile,建议分设纯 Ruby 与 Bundle 构建系统。

sublime怎么运行ruby_sublime配置ruby环境【教程】

sublime text 运行 Ruby 报 command not found: ruby

根本原因是 Sublime 的构建系统默认不继承你的 shell 环境(比如 zsh 或 bash$PATH),所以即使终端里能跑 ruby --version,Sublime 也找不到 ruby 可执行文件。

实操建议:

  • 先在终端运行 which ruby,记下输出路径,例如 /opt/homebrew/bin/ruby/usr/local/bin/ruby
  • 打开 Sublime → Tools → Build System → New Build System,粘贴以下内容(把 /your/path/to/ruby 换成你自己的路径):
{   "shell_cmd": "/your/path/to/ruby "${file}"",   "file_regex": "^(...*?):([0-9]*):?([0-9]*)",   "selector": "source.ruby",   "encoding": "UTF-8" }

保存为 Ruby.sublime-build,然后手动选中它(Tools → Build System → Ruby)。

用 Bundler 管理 gem 时,require 报错找不到本地 gem

Sublime 默认只调用裸 ruby,不走 bundle exec,所以即使项目有 Gemfilerequire 'rspec' 这类语句也会失败。

实操建议:

  • 修改刚才的 Ruby.sublime-build,把 shell_cmd 换成:
"shell_cmd": "cd "${file_path}" && bundle exec ruby "${file}""

注意:&& 前后不能有空格,否则 windows 不兼容;Mac/linux 可用,Windows 用户得换 &(单个)或改用批处理封装

  • 如果项目没装 Bundler,或不想强依赖 bundle exec,就别加这层——否则一开文件就报 Could not locate Gemfile

中文输出乱码(尤其 Windows + Ruby 3.x)

Ruby 3 默认用 UTF-8,但 Windows 控制台常是 GBK 编码,Sublime 构建面板又直接捕获 stdout,结果中文全变问号或异常字符。

实操建议:

  • 最稳方案:在 Ruby 脚本开头加 $stdout.set_encoding('UTF-8')(仅对输出生效)
  • 临时绕过:把构建命令改成 ruby -EUTF-8:GBK "${file}",让 Ruby 强制以 GBK 解码输入、UTF-8 输出(适合简单脚本)
  • 别碰 Sublime 的 encoding 字段——它只控制文件读取编码,不影响运行时终端行为

想自动检测当前目录有没有 Gemfile 再决定是否用 bundle exec

Sublime 的构建系统不支持条件判断,没法像 shell 那样写 if [ -f Gemfile ]; then ...。硬要“智能”反而容易出错。

实操建议:

  • 老实用两个独立的构建系统:Ruby.sublime-build(纯 ruby)和 Ruby-Bundle.sublime-build(带 bundler),按需切换
  • 或者统一用 bundler 版本——只要项目根目录没 Gemfilebundle exec 会直接报错退出,不影响调试;你一眼就能看出该不该配 Bundler
  • 别试图用 Python 插件做动态构建——Sublime 的 exec 类插件在构建流程中不可靠,容易卡死或丢输出

环境变量、路径、编码、执行上下文——这四个点串起来才是真实可用的 Ruby 构建链。少一个,就卡在“明明终端能跑,Sublime 就不行”。

text=ZqhQzanResources