必须安装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 安装完 Ruby on Rails 开发辅助插件,不是装上就自动好用——跳转失效、ERB 无高亮、link_to 右键没反应、断点进不了 app/models,全是插件装了但没对齐上下文的典型表现。必须按角色分工装、按顺序启用、按项目上下文初始化。
该装哪三个核心插件(不多不少)
VSCode 插件市场搜 “ruby” 会出来二十多个,但真正协同工作的只有三个,装多反而冲突:
-
wingrunr21.vscode-ruby(蓝宝石图标):提供基础语法高亮、Ctrl+Click跳转、终端集成;必须关掉它的内置 linter:"ruby.lint": [],否则和 RuboCop 冲突 -
castwide.ruby-lsp:当前唯一持续维护的 LSP 前端;但它只是个壳,依赖本地已安装的ruby-lspgem,不是插件自带 -
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环境,导致 Rails 插件无法加载上下文 - 重载窗口(
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语言模式依赖wingrunr21.vscode-ruby提供底层支持,所以这个插件必须先启用 - 别信“ERB Helper”类插件能解决语法高亮——它只补全标签,不改语言模式
调试前必做的三件事(缺一不可)
断点卡在 controller 不进 model、binding.break 不触发、rails server 启动报错,90% 出在这三步没做:
- 在
Gemfile里加:gem "debug", group: :development, require: false,然后运行bundle install - 删干净所有
binding.pry、byebug、pry-byebug—— 它们和debuggem 冲突,会导致进程假死 - Rails 7+ 必须切回 classic autoloader:在
config/environments/development.rb加config.autoloader = :classic,加完立刻执行bin/rails tmp:clear清缓存
复杂点在于:这些步骤之间有强依赖——code . 启动方式错了,bundle install 就装到了错的 gemset;autoloader 没切、缓存没清,debug 就永远监听不到 app/models 的真实路径。每一步都要验证结果,不能只看“有没有报错”。


















