LoginSignup
5
1

Tips: coc-solargraphを使うときはshellの指定をした方が良いかも

Last updated at Posted at 2024-01-08

初めに

NeovimでRubyのLspを使う方法の一つに、coc.nvimcoc-solargraphを使う方法があります。
このライブラリを導入し、READMEの通りに設定を行なっても正しく動作をしなかったため、解決方法をTipsとしてまとめます。

問題が起こった環境

  • マシン: Mac (M1)
  • Ruby: rbenvでv3.2をglobalに指定
  • シェル: zsh
  • Neovim: v0.9.4

起こっていた問題

READMEの通りに設定を行い、いざRubyのファイルを開くと以下のようなエラーがNeovimのコンソールに表示されました。

[coc.nvim]: UnhandledRejection: /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem solargraph (>= 0.a) with executable solargr
aph (Gem::GemNotFoundException)
        from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
        from /Users/getty104/.anyenv/envs/rbenv/gems/3.2.0/bin/solargraph:25:in `<main>'

エラーの内容を見る限り、rbenvで指定したRubyではなく、MacにプリインストールされているRubyのパスを参照しているようでした。
MacにプリインストールされているRubyは2.6系のため、solargraphをインストールすることはできないため、なんとかrbenvで指定したRubyを参照するようにする必要がありました。

原因

以下のIssueの通り、shellオプションにシェルの指定を行わないと、ログインしているシェルではないシェルを読みにいってしまうことがあるようでした。

rbenvのセットアップはzshrcに書いていたため、zsh以外のシェルを用いてコマンドが実行され、それによりデフォルトのプリインストールされているRubyが参照されてエラーになっていたのが原因でした。

解決方法

coc-settings.jsonでシェルの指定を行うことで解決しました。

{
  "solargraph.shell": "/bin/zsh"
}
5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1