vscode运行ruby失败主因是环境未对齐:macos需将rbenv init命令加到~/.zprofile并重启vscode,windows需手动添加ruby路径到系统path;ruby-lsp依赖gem install ruby-lsp;调试须用debug gem和rdbg type;code runner需配置bundle exec。

VSCode 里点右上角 ▶️ 或按 F5 运行 Ruby 脚本失败,90% 不是代码问题,而是终端环境没对齐——which ruby 在 VSCode 集成终端里输出 /usr/bin/ruby 或直接报 command not found,就别调 launch.json 了,先修环境。
which ruby 在 VSCode 终端里没输出?说明 shell 初始化根本没加载
VSCode 启动时用的是图形界面的“干净”环境,不读你的 ~/.zshrc 或 ~/.bash_profile,只可能读 ~/.zprofile(macOS)或系统 PATH(Windows)。你在 iTerm 里一切正常,不代表 VSCode 看得见 rbenv/rvm。
- macOS 用户:把
rbenv init - zsh输出的eval "$(rbenv init - zsh)"行粘进~/.zprofile(不是~/.zshrc),改完必须完全退出 VSCode(Cmd+Q),再重开 - Windows 用户:RubyInstaller 安装时没勾选 “Add Ruby executables to your PATH”,就得手动把类似
C:\Ruby32-x64\bin加进「系统环境变量」PATH,然后重启 VSCode - 验证方式:在 VSCode 集成终端(
Ctrl+`)里运行which ruby,输出路径必须含.rbenv/shims、.rvm/rubies或Ruby32-x64\bin;同时状态栏左下角要显示 Ruby 版本号
ruby-lsp 启动失败或跳转失效?插件只是壳,gem 才是真身
castwide.ruby-lsp 插件本身不带语言服务器,它启动时会去 PATH 里找 ruby-lsp 可执行文件。只装插件不装 gem,Output → “Ruby LSP” 面板里一定显示 Failed to start language server。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 先用
rbenv local 3.2.2切到项目对应版本(确认ruby -v匹配),再运行gem install ruby-lsp - 项目有
Gemfile且锁定了ruby-lsp?在 VSCode 设置里把rubyLsp.serverPath改成bundle exec ruby-lsp - Ruby 2.6 以下版本不兼容当前
ruby-lsp,会静默失败;旧版项目建议升 Ruby 或换 Solargraph(但 Solargraph 已停更,仅作临时过渡) - 务必禁用所有
solargraph相关扩展——castwide.ruby-lsp和solargraph不能共存,会抢端口、导致补全卡死
F5 调试断点灰掉或报 undefined method `write' for nil:NilClass?debugger 方法已被移除
Ruby 3.1+ 彻底删掉了 debugger 方法,byebug 和 ruby-debug-ide 全部失效。这不是配置问题,是 Ruby 解释器层的硬性变更。
- 必须改用
debuggem:在Gemfile里加gem "debug", group: :development,然后bundle install -
launch.json的type必须设为rdbg(不是ruby或ruby-debug-ide),示例配置:
{
"type": "rdbg",
"name": "Debug Current File",
"request": "launch",
"script": "${file}",
"rubyVersion": "3.2.2",
"pathToBundler": "/Users/you/.rbenv/shims/bundle"
}
-
rubyVersion必须和项目.ruby-version一致;pathToBundler必须是 shim 路径(如.rbenv/shims/bundle),不能是bundle命令本身 - 调试前确保当前终端已激活正确 Ruby 版本:
ruby -v和which rdbg的路径要能对上
Code Runner 点一下就报错?它默认不走 bundle exec
code-runner 插件默认用 ruby 命令直接执行,绕过 Gemfile,所以遇到 require 'rspec' 就崩,或提示 LoadError: cannot load such file。
- 打开设置搜
code-runner.executorMap,把 Ruby 对应项改成:
"ruby": "cd $dir && bundle exec ruby $fileName"
- 注意:这要求项目根目录有
Gemfile,且bundle install已成功;否则换成ruby $fileName回退到裸解释器模式 - 如果项目没用 Bundler,又想用 Code Runner,记得在文件顶部加 shebang:
#!/usr/bin/env ruby,并确保ruby在 PATH 中可执行
最常被忽略的一点:VSCode 不继承你终端里的环境变量,哪怕你 export RUBY_VERSION=3.2.2 写进 ~/.zshrc,VSCode 也看不到——它只认启动时加载的初始化文件,或你手动塞进 terminal.integrated.env.* 的 PATH。环境不对,后面所有插件、调试、跳转都是空中楼阁。










