sublime text 中 ruby 脚本执行失败主因是环境配置不当:需确保终端中 which ruby 可查到路径,通过终端启动 subl 以继承 path,并配置自定义 build system 指定 ruby 路径、编码及环境变量,rbenv/rvm 用户推荐用包装脚本或 bundle exec ruby 适配项目上下文。

Sublime Text 里 Ruby 脚本执行不了?先确认 ruby 命令是否可用
很多问题其实卡在系统层面:Sublime 不是不支持 Ruby,而是根本找不到 ruby 可执行文件。它默认调用的是系统 PATH 下的 ruby,不是你用 rbenv/rvm 装的那个版本。
实操建议:
- 终端里运行
which ruby,记下完整路径(比如/Users/xxx/.rbenv/shims/ruby或/usr/local/bin/ruby) - 如果返回空或报错,说明 Ruby 没装好,或者 shell 配置没生效(
~/.zshrc里的 rbenv init 没 source) - Sublime 启动方式很重要:不要从 Dock 或 Spotlight 点开,要从终端运行
subl—— 这样它才能继承 shell 的 PATH 和环境变量
怎么让 Sublime 正确运行当前 Ruby 文件?用 Build System
Sublime 不像 VS Code 那样自动识别语言运行逻辑,必须手动配 Build System。默认的 Ruby 构建只是调用 ruby,不传参数、不处理编码、不显示错误行号,容易误判失败。
实操建议:
- 菜单栏 → Tools → Build System → New Build System…
- 替换为以下内容(注意把
ruby路径换成你which ruby的结果):
{
"cmd": ["/usr/local/bin/ruby", "-W", "$file"],
"file_regex": "^(...*?):([0-9]*):?([0-9]*)",
"selector": "source.ruby",
"encoding": "UTF-8"
}
说明:-W 开启警告;$file 是当前文件绝对路径;file_regex 让错误能双击跳转到对应行;selector 确保只对 .rb 文件生效。
本文档主要讲述的是Android 本地数据存储;对于需要跨应用程序执行期间或生命期而维护重要信息的应用程序来说,能够在移动设备上本地存储数据是一种非常关键的功能。作为一名开发人员,您经常需要存储诸如用户首选项或应用程序配置之类的信息。您还必须根据一些特征(比如访问可见性)决定是否需要涉及内部或外部存储器,或者是否需要处理更复杂的、结构化的数据类型。跟随本文学习 Android 数据存储 API,具体来讲就是首选项、SQLite 和内部及外部内存 API。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以
rbenv / rvm 环境下 Build System 总调错 Ruby 版本?别硬写路径
直接写死 /Users/xxx/.rbenv/shims/ruby 看似可行,但一旦切换项目 Ruby 版本,shim 会自动路由,而 Sublime 的 Build System 不会重新加载 shims —— 它可能缓存旧路径或根本绕过 shim。
实操建议:
- 改用包装脚本,让 Sublime 走 shell 环境:新建文件
~/bin/sublime-ruby,内容为:
#!/bin/bash exec ruby "$@"
-
chmod +x ~/bin/sublime-ruby,然后在 Build System 里写"cmd": ["~/bin/sublime-ruby", "$file"] - 确保
~/bin在 PATH 前面(检查echo $PATH),这样subl从终端启动时才能优先找到它
中文输出乱码、require 报错找不到 gem?Ruby 编码和 load path 没对齐
常见现象:脚本里有中文 puts 出来是 ;或者 require 'json' 成功,但 require 'pry' 失败 —— 这不是 Sublime 的锅,是 Ruby 运行时环境缺失。
实操建议:
- Build System 加上环境变量,比如 rbenv 用户加
"env": {"RBENV_VERSION": "3.1.4"}(值来自rbenv versions) - 中文乱码大概率是终端默认编码和 Sublime 不一致,强制指定:
"cmd": ["ruby", "-EUTF-8", "$file"] - gem 找不到?检查
ruby -e "puts $:"输出的 load path 是否包含你的 gem 目录;必要时在 Build System 里加"path": "/Users/xxx/.rbenv/versions/3.1.4/lib/ruby/gems/3.1.0/gems"
最常被忽略的一点:Sublime 的 Build System 是静态配置,它不会随 Terminal 中 cd 到不同项目而自动切换 Ruby 版本或 bundle context。如果项目依赖 Gemfile,得额外配 bundle exec ruby,否则连 require_relative 都可能失败。









