必须安装wingrunr21.vscode-ruby、castwide.ruby-lsp、bung87.rails三个核心插件;卸载rebornix.ruby、ruby-solargraph、misogi.ruby-debug-ide;确保code .打开项目、routes.rb存在、.html.erb映射为erb、debug gem启用且autoloader切classic并清缓存。

VSCode 要真正支撑 Rails 高效开发,不是装一堆 Ruby 相关插件就行——跳转失效、ERB 不高亮、link_to 右键没反应、断点卡在 controller 进不了 model,全是“插件装了但没对齐上下文”的典型表现。必须按角色分工装、按顺序启用、按项目上下文初始化。
只装这三个核心插件(不多不少)
wingrunr21.vscode-ruby 提供基础语法高亮和 Ctrl+Click 跳转,但必须关掉它的内置 linter:"ruby.lint": [],否则和 RuboCop 冲突;castwide.ruby-lsp 是当前唯一持续维护的 LSP 前端,但它只是个壳,依赖本地已安装的 ruby-lsp gem,不是插件自带;bung87.rails 是唯一能解析 config/routes.rb 并建立视图/控制器跳转关系的插件,右键 form_with 或 render 能跳到对应 action,全靠它。
务必卸载:rebornix.ruby(已停更)、ruby-solargraph(Solargraph 官方 2024 年起不再发布)、misogi.ruby-debug-ide(Ruby 3.1+ 崩溃率高)。
为什么 link_to 右键没反应?检查 Rails 工作区识别
Rails 插件不会自动生效,它只在 VSCode 正确识别为 Rails 工作区时才启动。常见错误现象是插件装了但所有跳转都灰掉:
- 右下角状态栏没显示 “Rails” 字样 → 说明 VSCode 没识别出 Rails 项目结构
- 检查项目根目录是否存在合法的
config/routes.rb,且内容不为空(哪怕只有一行Rails.application.routes.draw {}) - 确保是通过终端进入项目目录后执行
code .打开 VSCode,而不是双击图标或用open -a "Visual Studio Code" .—— 后者会丢失 rbenv/rvm 环境 - 重载窗口(Cmd+Shift+P → Developer: Reload Window)后仍无效,可手动运行命令面板里的
Rails: Reload Routes
.html.erb 文件里 Ruby 代码不着色?改文件类型映射
这不是插件问题,是 VSCode 默认把 .html.erb 当 HTML 处理,里面的 和 完全不走 Ruby 语法引擎:
- 在工作区根目录下的
.vscode/settings.json中添加这一行:"files.associations": {"*.html.erb": "erb"} - 保存后必须重载窗口(Cmd+Shift+P → Developer: Reload Window),仅重启编辑器不生效
-
erb语言模式依赖于插件提供支持,所以bung87.rails必须已启用
Rails 7+ 断点进不了 app/models?切 autoloader 并清缓存
Rails 7 默认用 :zeitwerk,但 debug gem 对它的路径监听不稳定,断点常跳到错误文件、卡在 controller 不进 model:
- 在
config/environments/development.rb中加一行:config.autoloader = :classic - 改完立刻在终端执行
bin/rails tmp:clear,否则 zeitwerk 缓存还在生效 - 如果仍不进
app/models,可在launch.json的env字段加"RUBY_DEBUG_NO_RAILS": "1",临时禁用 Rails 集成验证是否是 autoload 干扰 - 调试器只认
fxn.vscode-ruby-debug+debuggem 组合,别混用旧版ruby-debug-ide
最易被忽略的是:VSCode 是否继承了你的终端 Ruby 环境。which ruby 在外部终端是对的,但在 VSCode 集成终端里指向 /usr/bin/ruby,90% 的跳转/调试失败都源于此——code . 是唯一可靠入口,其他方式打开等于没配。











