VSCode运行Ruby需先确保终端识别ruby命令:Mac用户检查~/.zshrc并完全重启VSCode,Windows用户确认系统PATH或改终端类型;ruby-lsp为当前推荐语言服务器,须gem install并匹配Ruby版本;调试必须配置.launch.json,Code Runner默认不走bundle exec需手动修改。

VSCode 本身不运行 Ruby,它只是调用你系统里已安装的 ruby 命令。所有“点一下就跑”的功能,都建立在终端能认出 ruby 的前提上;插件装得再多,which ruby 没输出,一切调试、补全、跳转都会静默失效。
为什么点右上角▶️没反应?先查 ruby 是否进 VSCode 环境
VSCode 启动时读取的是“图形界面启动上下文”,不是你日常用的 shell。Mac 用户改了 ~/.zshrc,但没完全退出 VSCode 再重开,它就看不到新 PATH;Windows 用户用 Git Bash 装的 Ruby,VSCode 默认终端是 PowerShell,自然找不到 ruby。
- 在 VSCode 集成终端里执行
which ruby(Mac/Linux)或where ruby(Windows),必须有路径输出 - Mac 用户:确认
~/.zshrc里有类似export PATH="/opt/homebrew/bin:$PATH",然后彻底退出 VSCode(不是关窗口),再重开 - Windows 用户:若用 RubyInstaller 安装,检查系统环境变量是否包含
C:\Ruby32-x64\bin;若用 WSL,别指望 Windows 版 VSCode 直接调用 WSL 的ruby - 验证通过后,状态栏左下角应显示
Ruby x.x.x—— 这才是 VSCode “认出” Ruby 的唯一可信信号
ruby-lsp 和 solargraph 到底该选哪个?
两者都是语言服务器,但维护状态和适用场景不同:ruby-lsp 是当前官方推荐、活跃更新的实现,依赖本地 gem install ruby-lsp;solargraph 已停止维护(作者 2024 年起不再发布新版本),仅建议用于老项目兼容。
- 新项目直接用
ruby-lsp:在项目根目录运行gem install ruby-lsp,确保当前 shell 的 Ruby 版本与项目一致(如用rbenv,先rbenv local 3.2.2) - 如果项目用
Bundler,且Gemfile里锁定了ruby-lsp,就在 VSCode 设置里把rubyLsp.serverPath改成bundle exec ruby-lsp -
solargraph用户注意:solargraph bundle必须在项目根目录运行,且.solargraph.yml中要加require: ["./config/environment"]才能支持 Rails 动态方法 - 二者不能共存——VSCode 只允许启用一个语言服务器,冲突时优先禁用
solargraph
按 F5 调试报 No configuration found for launch?launch.json 不可省略
VSCode 的 Ruby 调试器(无论 ruby-debug-ide 还是 rdbg)不支持零配置启动。没有 .vscode/launch.json,F5 就是摆设。
- 首次配置:Cmd+Shift+P → 输入 “Debug: Open launch.json” → 选择 “Ruby” 环境 → 自动生成模板
- 最简可用配置(运行当前文件):
{ "version": "0.2.0", "configurations": [ { "name": "Debug Current File", "type": "Ruby", "request": "launch", "program": "${file}" } ] } - 若用
rdbg(Rails 7+ 默认),需额外安装gem install rdbg,并在配置中加"rdbgPath": "rdbg" - 调试 Rails server 时,
program应指向${workspaceFolder}/bin/rails,并加"args": ["server"]
Code Runner 能一键运行,但它绕过 Bundler 环境
coderunner 插件默认执行 ruby filename.rb,不走 bundle exec。如果你的脚本依赖 Gemfile 里的 gem(比如 pry 或 httparty),直接点 ▶️ 会报 LoadError。
- 解决办法:在 VSCode 设置中搜索
code-runner.executorMap,找到ruby对应项,把它从"ruby -i $fileName"改成"bundle exec ruby $fileName" - 但注意:这要求你在项目根目录下打开 VSCode,否则
bundle exec会找不到Gemfile - 更稳妥的做法是——别依赖 Code Runner 跑带依赖的脚本,改用集成终端手动敲
bundle exec ruby script.rb,可控性更高
真正卡住人的从来不是插件装多少,而是 ruby 命令能不能被 VSCode 终端识别、ruby-lsp gem 能不能在当前 Ruby 版本下启动、launch.json 里 program 路径是不是写对了绝对路径。这三个点任何一个没对齐,整个 Ruby 开发流就会断在第一秒。











