Sublime Text 中 Ruby LSP 不工作是因为依赖的 Solargraph 未被 Sublime 进程正确识别:需确保其绝对路径在 PATH 中且配置到 LSP 设置里,项目根目录还需有正确配置的 .solargraph.yml 并执行 solargraph bundle。

Sublime Text 里 Ruby LSP 不工作,根本不是插件没装对
Ruby 没有官方维护的 LSP 服务器(不像 Crystal 或 Rust),所以 Sublime Text 中所谓“Ruby LSP”,实际依赖第三方实现——目前唯一稳定可用的是 Solargraph。但它不是开箱即用:它必须在你系统 PATH 里能被 Sublime 进程直接调用,否则 SublimeLSP 插件会静默失败,控制台不报错、补全不弹、悬停无类型,一切看起来都“正常”,唯独没功能。
验证 Solargraph 是否真被 Sublime 看得见
别信终端里 solargraph --version 能跑就万事大吉。Sublime GUI 启动时根本不加载你的 shell 配置(~/.zshrc 或 ~/.bash_profile),所以即使终端里一切正常,Sublime 控制台里仍可能报 command not found: solargraph。
- 按
Ctrl+`打开 Sublime 控制台,输入:import os; print(os.environ.get('PATH')),确认输出里包含solargraph所在路径(如/Users/xxx/.gem/ruby/3.2.0/bin或/opt/homebrew/bin) - 在同一控制台里直接运行:
import subprocess; subprocess.run(['solargraph', '--version'])—— 如果失败,说明 Sublime 进程根本找不到它,后续所有配置都是空谈 - macOS Apple Silicon 用户常见问题:用
gem install solargraph安装后,solargraph实际在/opt/homebrew/lib/ruby/gems/3.2.0/bin/solargraph,而该路径未必在 PATH 里;建议用brew install solargraph(如果 Homebrew 提供)或手动把 gem bin 目录加进 shell 配置并确保 Sublime 能继承
SublimeLSP 配置必须写死 solargraph 绝对路径
SublimeLSP 的 "command" 字段不支持 shell 解析(比如 ~、环境变量、别名),只认绝对路径数组。写 ["solargraph", "stdio"] 在 GUI 下基本必挂。
- 先用
which solargraph在终端查真实路径,例如:/Users/xxx/.rbenv/shims/solargraph或/opt/homebrew/bin/solargraph - 在
LSP.sublime-settings或项目级.sublime-project的"settings" → "LSP"下配:"ruby": {"command": ["/Users/xxx/.rbenv/shims/solargraph", "stdio"]} - Windows 用户注意:
solargraph.bat是批处理包装器,LSP 必须指向它,路径中反斜杠要双写:["C:\Ruby32-x64\bin\solargraph.bat", "stdio"] - 如果你用
rbenv,不要指望shims自动选对 Ruby 版本——solargraph必须和你项目所用 Ruby 版本一致编译安装,否则启动时报LoadError: cannot load such file -- bundler/setup
Ruby 项目根目录必须有 .solargraph.yml,且不能是空文件
Solargraph 默认只索引当前目录下 **/*.rb,但 Rails 项目、Gem 开发或带 lib/ + app/ 结构的工程,需要显式告诉它哪些路径要纳入语义分析,否则跳转、补全、文档都残缺。
- 在项目根目录新建
.solargraph.yml,内容至少包含:include: - "**/*.rb"(基础) +require: [](避免自动 require 冲突) - Rails 项目建议加:
plugins: - solargraph-rails(需单独gem install solargraph-rails),否则ApplicationController、ActiveRecord::Base等类无法识别 - 执行一次
solargraph bundle(确保在项目根目录、且BUNDLE_GEMFILE正确)——这步生成缓存,不运行则 LSP 启动后长时间无响应或反复报错 - 如果项目用了
zeitwerk(Rails 7+ 默认),确保.solargraph.yml里没有require:干扰自动加载逻辑,否则MyModule::MyClass补全会失效
Solargraph 的 stdio 模式对 Windows 和 macOS M 系列兼容性最稳,别尝试 tcp 或 socket;另外,SublimeLSP 的 "enabled" 必须设为 true,且 "selector" 要匹配 source.ruby,这两处漏掉一个,LSP 就完全不激活。


















