VSCode本身不运行Ruby,仅调用终端ruby命令;若右上角▶️无反应或报command not found: ruby,说明环境变量未加载,需检查shell配置(如~/.zshrc)、完全退出并重开VSCode,再验证which ruby输出。

VSCode 本身不运行 Ruby,它只是调用你终端里能执行的 ruby 命令;如果你点右上角 ▶️ 没反应、或终端报 command not found: ruby,说明环境根本没进 VSCode——不是插件装少了,是 Ruby 还没被它“看见”。
which ruby 在 VSCode 终端里没输出?先修 PATH
VSCode 集成终端启动时,不一定加载你的 shell 配置(比如 ~/.zshrc 或 ~/.bash_profile),导致 rbenv、rvm 或自定义 PATH 失效。
- macOS/Linux:检查
~/.zshrc(或对应 shell 配置)是否包含eval "$(rbenv init - zsh)"(rbenv)或source ~/.rvm/scripts/rvm(RVM),然后完全退出 VSCode 再重开——它不会热更新环境变量 - Windows:若用 RubyInstaller,确认安装时勾选了 “Add Ruby executables to your PATH”;若用 msys2+rbenv,别用 Git Bash 作为默认终端,改设为 Windows Terminal 或在 VSCode 设置里显式指定终端类型
- 验证方式:在 VSCode 集成终端中运行
which ruby(macOS/Linux)或where ruby(Windows),输出路径必须含~/.rbenv/、~/.rvm/或C:\Ruby*\bin,不能是/usr/bin/ruby(系统 Ruby 通常权限受限,gem install 会失败)
装了 Ruby 插件但跳转/补全失效?ruby-lsp 没跑起来
新版 Ruby 插件(如 wingrunr21.vscode-ruby)依赖本地 ruby-lsp gem 提供语义能力,只装插件不装 gem,等于有网线没接路由器。
- 在项目根目录运行
gem install ruby-lsp;如果用rbenv,先确保当前 shell 的 Ruby 版本与项目一致(rbenv local 3.2.2),再装 - 旧版 Ruby(如 2.6 以下)可能不兼容最新
ruby-lsp,会静默失败;打开 VSCode 的Output → Ruby LSP面板,看到Failed to start language server就是这个原因 - 项目用 Bundler?在插件设置里把
rubyLsp.serverPath改成bundle exec ruby-lsp,否则它读不到Gemfile里的依赖 - 别同时启用
ruby.useLanguageServer和过时的ruby.interpreterPath,后者已废弃,冲突会导致 LSP 启动失败
F5 调试报 No configuration found?launch.json 必须手写
VSCode Ruby 调试器不支持零配置启动。所谓“装完插件就能 F5”是常见误解;没有 .vscode/launch.json,F5 直接报错。
- 最简可用配置(调试当前文件):
{ "version": "0.2.0", "configurations": [ { "name": "Debug Current Script", "type": "Ruby", "request": "launch", "cwd": "${workspaceFolder}", "program": "${file}", "env": {} } ] } -
"type": "Ruby"对应的是rebornix.ruby(老但稳定)或wingrunr21.vscode-ruby,不是ruby-lsp插件——后者只做语言服务,不处理调试 - 断点只在
require之后的文件生效:比如app/controllers/users_controller.rb可以,但config/application.rb不行,因为rdebug-ide启动时机晚于初始化代码 - 如果用 Rails,
program改成"${workspaceFolder}/bin/rails",并加"args": ["server"]才能 F5 启动服务器
为什么 Code Runner 点一下就跑,但调试总连不上?
Code Runner 是纯终端封装,它直接调 ruby xxx.rb;而调试器(rdebug-ide)需要监听端口、注入调试逻辑,对 Ruby 版本和 gem 兼容性更敏感。
- 确保已安装
ruby-debug(注意不是debug,那是 Rails 7.1+ 内置的,VSCode 不认),并在 Gemfile 中声明:gem 'ruby-debug', require: false,然后bundle install -
launch.json中不要写死pathToRDebugIDE,让插件自动找;如果失败,手动设为bundle exec rdebug-ide(不是rdebug) - 调试时务必确认 VSCode 终端里
ruby -v和bundle exec ruby -v输出一致——版本错位是断点不命中头号原因
最常被忽略的点:VSCode 集成终端和图形界面启动方式不同,它不继承 GUI 环境变量;哪怕你在 iTerm 里 ruby -v 正常,VSCode 里也可能找不到 ruby。每次换 Ruby 版本后,记得 rbenv rehash 或 rvm reload,再彻底重启 VSCode。


















