必须在终端执行code .启动VSCode以继承rvm环境;rvm use仅当前会话生效,VSCode集成终端启动时未加载~/.zshrc导致rvm不可见,需验证rvm current并确保.ruby-version/.ruby-gemset正确。

VSCode 终端里 rvm use 有效但脚本仍跑在系统 Ruby 上?
根本不是 RVM 没生效,而是 VSCode 启动时没加载你的 shell 初始化文件(比如 ~/.zshrc),导致它压根不知道 RVM 存在。你在终端手动执行 rvm use 3.2.2 确实会切换成功,但这个动作只对当前 shell 会话生效;VSCode 集成终端启动时是“干净”的,不继承你手动 source 过的环境。
验证方式:在 VSCode 终端里直接运行 rvm current —— 如果输出 system 或报错 command not found: rvm,就坐实了这个问题。
- macOS 用户检查
~/.zshrc是否包含 RVM 初始化代码:[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" - 改完后必须完全退出 VSCode(
Cmd+Q),不能只是关窗口 - Windows 用户基本不用 RVM,别折腾;WSL 下装的 RVM 对原生 VSCode 不可见,得用 WSL 版 VSCode
which ruby 显示 /Users/xxx/.rvm/rubies/ruby-3.2.2/bin/ruby 但 bundle exec 报错?
RVM 路径对了,但 Bundler 没对齐当前 gemset 或 Ruby 版本。RVM 的 gemset 是隔离的,bundle install 安装的 gem 只在当前 gemset 里可见,VSCode 里如果没激活对应 gemset,bundle exec 就会 fallback 到全局或默认 gemset,导致找不到你项目依赖的 gem。
- 在项目根目录下运行
rvm use 3.2.2@myproject(假设你有命名 gemset) - 确认
.ruby-version和.ruby-gemset文件存在且内容正确 - VSCode 启动前,确保终端已激活目标 gemset;否则即使路径对,
bundle exec也会用错上下文 - 插件如
ruby-lsp默认不读 RVM gemset,需在设置里显式指定rubyLsp.serverPath为bundle exec ruby-lsp
点右上角 ▶️ 运行 Ruby 脚本,却提示 LoadError: cannot load such file?
VSCode 的“运行”按钮默认调用的是 ruby script.rb,它绕过了 Bundler,直接用当前 Ruby 解释器加载文件——但你的代码里可能用了 require_relative、autoload_paths 或 Gemfile 里的 gem,这些只有 bundle exec ruby script.rb 才能解析。
- 不要依赖右上角按钮,统一用集成终端执行
bundle exec ruby your_script.rb - 如果非要一键运行,装
formulahendry.code-runner插件,并在settings.json中配置:"code-runner.executorMap": {"ruby": "cd $dir && bundle exec ruby $fileName"} - 注意:RVM 的
defaultgemset 不等于项目 gemset,别指望rvm --default能解决所有问题
调试时断点灰掉、F5 报 No configuration found for launch?
Ruby 调试不支持零配置,launch.json 必须手动写,而且要和 RVM 当前激活的 Ruby 版本严格匹配。Ruby 3.1+ 已废弃 ruby-debug-ide,新版必须用 debug gem,但它的二进制名、路径、甚至 launch.json 里的 path 字段都随 RVM 切换而变。
- 先在当前 gemset 下运行
gem install debug - 生成
.vscode/launch.json,关键字段:"ruby": "bundle exec ruby"和"debugger": "debug" - 别用
ruby-debug-ide,它在 Ruby 3.1+ 上会静默失败或报undefined method write' for nil:NilClass - 每次 RVM 切换 Ruby 版本后,都要重新
gem install debug,旧版本的debuggem 不兼容新解释器
rvm current 在 VSCode 终端里输出预期版本,再在这个前提下配 bundle exec 和 debug。


















