求助:Helix中ruby-lsp启动失败,Ruby Gem环境配置问题
解决Helix中Ruby-LSP无法运行的问题
环境信息
- 系统:Voidlinux
- Shell:nushell 0.104.0
- Ruby版本:3.5.0dev(源码编译安装)
- Helix版本:25.01.1
- Ruby-LSP版本:0.24.1
Gem环境详情
~> gem environment RubyGems Environment: - RUBYGEMS VERSION: 3.7.0.dev - RUBY VERSION: 3.5.0 (2025-06-09 patchlevel -1) [x86_64-linux] - INSTALLATION DIRECTORY: /home/aurele/.rubies/ruby-master/lib/ruby/gems/3.5.0+2 - USER INSTALLATION DIRECTORY: ~/.local/share/gem/ruby/3.5.0+2 - CREDENTIALS FILE: ~/.local/share/gem/credentials - RUBY EXECUTABLE: /home/aurele/.rubies/ruby-master/bin/ruby - GIT EXECUTABLE: /usr/bin/git - EXECUTABLE DIRECTORY: /home/aurele/.rubies/ruby-master/bin - SPEC CACHE DIRECTORY: /home/aurele/.cache/gem/specs - SYSTEM CONFIGURATION DIRECTORY: /home/aurele/.rubies/ruby-master/etc - RUBYGEMS PLATFORMS: - ruby - x86_64-linux - GEM PATHS: - /home/aurele/.rubies/ruby-master/lib/ruby/gems/3.5.0+2 - ~/.local/share/gem/ruby/3.5.0+2 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :backtrace => true - :bulk_threshold => 1000 - REMOTE SOURCES: - https://rubygems.org/ - SHELL PATH: - /usr/lib/jvm/openjdk24/bin - /home/aurele/.rubies/ruby-master/bin - /usr/local/sbin - /usr/local/bin - /usr/bin - /usr/sbin - /sbin - /bin - /usr/lib/jvm/default-jdk/bin - /usr/lib/jvm/default-jre/bin - /home/aurele/.local/share/coursier/bin - /home/aurele/.cache/scalacli/local-repo/bin/scala-cli - /home/aurele/.rubies/ruby-master/lib/ruby/gems/3.5.0+2 - /home/aurele/.local/share/gem/ruby/3.5.0+2
Ruby-LSP安装验证
~> gem list | grep ruby-lsp ruby-lsp (0.24.1) ~> whereis ruby-lsp ruby-lsp: /home/aurele/.rubies/ruby-master/bin/ruby-lsp
注:Ruby-LSP同时存在于gem源码目录和可执行目录是正常现象,gem安装时会自动将可执行文件链接到EXECUTABLE DIRECTORY。
问题现象
- Helix执行
:lsp-restart时提示Language server exited - 终端通过
ps | where name == 'ruby-lsp'查询不到相关进程 - 当前Helix语言配置文件
~/.config/helix/languages.toml内容:
[language-server.ruby-lsp] command = "ruby-lsp" config = { diagnostics = true, formatting = true } args = [] [[language]] name = "ruby" language-servers = ["ruby-lsp", "solargraph"] auto-format = true file-types = ["rb", "ru", "gemspec", { glob = "Rakefile" }, { glob = "Gemfile" }, { glob = "*.rake" }, ".irbrc", ".pryrc"] shebangs = ["ruby"] roots = ["Gemfile", ".git"] [language.formatter] command = "rubocop" args = [ "--stdin", "file.rb", "--format", "files", "--stderr", "--stdin-path", "file.rb", ] [language.debugger] name = "rdbg" command = "rdbg" args = ["--open", "--port", ":0"] transport = "stdio" templates = [ { name = "start", request = "launch", completion = [ { name = "program", completion = "filename" } ], args = { command = "ruby", rubyopt = ["-rdebug/open_nonstop"], open = true, nonstop = true, program = "{0}" } }, { name = "attach", request = "attach", completion = [ { name = "port", default = "4711" } ], args = { command = "attach", port = "{0}" } }, ] [language-server.ruby-lsp.capabilities] completion = true hover = true definition = true documentSymbol = true foldingRange = true selectionRange = true inlayHint = true onTypeFormatting = true [language-server.ruby-lsp.diagnostics] rubocop = true [language-server.solargraph] command = "solargraph" args = ["stdio"] completion = true hover = true diagnostics = true [language.indent] tab-width = 2 unit = " "
排查与修复步骤
1. 验证Ruby-LSP独立运行能力
在终端直接执行ruby-lsp,查看是否能正常启动:
ruby-lsp
若启动失败,会输出具体错误信息(如依赖缺失、Ruby版本兼容问题)。由于使用的是Ruby 3.5.0dev开发版,建议:
- 切换到Ruby稳定版(如3.3.x)测试兼容性
- 安装旧版本Ruby-LSP尝试兼容:
gem install ruby-lsp -v 0.23.0
2. 解决语言服务器冲突
当前配置同时启用ruby-lsp和solargraph,可能导致资源冲突。先单独测试Ruby-LSP,修改[[language]]配置:
[[language]] name = "ruby" language-servers = ["ruby-lsp"] # 移除solargraph # 其余配置保持不变
3. 指定Ruby-LSP绝对路径
避免Helix无法定位可执行文件,直接写入绝对路径:
[language-server.ruby-lsp] command = "/home/aurele/.rubies/ruby-master/bin/ruby-lsp" config = { diagnostics = true, formatting = true } args = []
4. 确保Helix继承正确环境变量
Helix启动时可能未继承Shell完整PATH,可通过启动脚本指定:
export PATH="/home/aurele/.rubies/ruby-master/bin:$PATH" helix
5. 查看Helix LSP日志定位错误
在~/.config/helix/config.toml中添加日志配置:
[log] level = "debug" file = "~/.cache/helix/helix.log"
重启Helix后,查看~/.cache/helix/helix.log中ruby-lsp相关条目,定位具体错误原因。
6. 修复Ruby-LSP依赖
执行gem check ruby-lsp检查依赖完整性,若有缺失则重新安装:
gem install ruby-lsp --force
内容的提问来源于stack exchange,提问作者Aurélien Plazzotta
相关产品推荐
相关产品推荐

