🏃

VSCode の ruby-lsp 拡張でコードジャンプができるようになるまでにやったこと

2024/01/12に公開

はじめに

VSCode で Ruby の開発を行う場合、多くの方は元々rebornix.Ruby拡張を使っていたと思います。
しかしこちらの拡張は去年時点ですでに非推奨となっており、現在はインストールできません。
後継としてShopify.ruby-lspの使用が推奨されています。
多くの方がおそらくそうしているように、私もこちらの拡張に切り替えたのですが、rebornix.Rubyでできていた定義元へのコードジャンプ(cmd+クリック)ができなくなってしまいました。
ruby-lspは起動しているが、cmd+クリックしても何も起こらず、F12やサブメニューの「定義へ移動」をクリックしても「〜〜の定義は見つかりません」と表示される状況でした。
色々やってたら無事コードジャンプできるようになったので、試したことをまとめます。

結論

rubocop の拡張(misogi.ruby-rubocop)をアンインストールしたらコードジャンプできるようになりました!🙌
(が、もしかしたら他の要素も関係しているのかも・・・?)

前提:開発環境

元々私の開発環境は全て Docker コンテナ内に収められていて、ホストマシン上には Ruby もなにもインストールされていない状態からスタートしました。
VSCode のバージョンは1.85.1です。
また、Ruby に関連する拡張として下記をインストールしていました。(とりあえず入れるだけで使ってないものもあり・・・)

  • Shopify.ruby-lsp
  • misogi.ruby-rubocop
  • castwide.solargraph
  • sorbet.sorbet-vscode-extension
  • KoichiSasada.vscode-rdbg
  • connorshea.vscode-ruby-test-adapter
  • Hridoy.rails-snippets

やったこと

  • とりあえずホストマシンにも rbenv, Ruby をインストールしてみた -> 変化なし
  • ホストマシン上の開発ディレクトリでもbundle installしてみた -> 変化なし
  • castwide.solargraph拡張をアンインストールしてみた -> 変化なし
  • Shopify.ruby-lsp, sorbet.sorbet-vscode-extension拡張を一度アンインストールし、Shopify.ruby-extensions-packからインストールし直してみた -> 変化なし
  • ローカルでgem install ruby-lspしてみた -> 変化なし
  • 開発ディレクトリのGemfileにruby-lspを追加してbundle installしてみた -> 変化なし
    • 試した後元に戻しました
  • castwide.solargraph拡張をアンインストールしてみた -> 変化なし
  • misogi.ruby-rubocop拡張をアンインストールしてみた -> コードジャンプできるようになった!

まとめ

上記の通りで、最終的にはmisogi.ruby-rubocop拡張を削除したらコードジャンプできるようになりました。
Shopify.ruby-lsp内にもrubocopによるフォーマット機能が入っており、保存時の自動修正なども変わらず動作しています(むしろ動作が早くなった気がする)。
ただ、試しにあらためてmisogi.ruby-rubocop拡張をインストールし直してみたところ、問題なくコードジャンプできてしまいました・・・。
というわけで正直何が効いたのかはっきりわかりませんが、少なくとも拡張機能の整理は一つ有効な手段だと思いますので、もしも私と同様にお困りの方がいましたらぜひお試しください。

コードジャンプできると快適!!!😭

2024/01/18追記: DevContainerを使う場合の留意点

ホストマシン上での開発ではなく、DevContainer(というかremote?)を使う場合は以下の対応が必要なようでした。

  • devcontainer.jsonに"remoteUser": "root"を追記する。
  • 開発ディレクトリのrootとRuby環境のrootが異なる場合はマルチワークスペースの設定をしないといけないっぽい

Discussion