はじめに
ちょっとした理由があり、Rubyの学習を再度始めました。
いままで使えないまま放置していたSolargraphをちゃんと使えるようにしようと思い、対処したので備忘録として残しておきます
環境
- VSCode
- WSL2(Ubuntu)
- Windows11
やりたいこと
- solargraphを使いたい
やったこと
- solargraphをVSCodeでインストール
- gemをUbuntuでインストール
エラー内容
Solargraph gem not found. Run `gem install solargraph` or update your Gemfile
原因
- VSCodeはWindows上に、gemはUbuntu上にあり、上手く読み込めていない
解決策
GitHubのQAを参照しながら対処しました。
最下部の参考欄にリンクを記載しています。
以下に該当箇所の和訳とちょっとした追記を記載します。
-
bashでwhich solargraphを実行し、パスをコピーする
- 追記:このときUbuntu上でコマンドを実行する
-
solargraph.batファイルを作成し、以下のスニペットを貼り付ける。 {{SOLARGRAPH_PATH}}を1のパスに置き換えて使用する
@echo off bash -c "{{SOLARGRAPH_PATH}} %*" // e.g. @echo off bash -c "~/.rbenv/shims/solargraph %*"
- 重要:パスのbinをwrapperに置き換えてください。
- (e.g. /home/mtamdev/.rvm/gems/ruby-2.6.0@dev-project/bin/solargraph %* -> /home/mtamdev/.rvm/gems/ruby-2.6.0@dev-project/wrappers/solargraph %*
- 追記:自分の場合は以下パスが以下だったので、wrapperに置き換えずそのまま使いました
~/.rbenv/shims/solargraph %*
- 追記:batファイルはVSCodeが存在するWindows上に作成します
- 追記:自分の場合は以下パスが以下だったので、wrapperに置き換えずそのまま使いました
- (e.g. /home/mtamdev/.rvm/gems/ruby-2.6.0@dev-project/bin/solargraph %* -> /home/mtamdev/.rvm/gems/ruby-2.6.0@dev-project/wrappers/solargraph %*
- 重要:パスのbinをwrapperに置き換えてください。
-
solargraph.batファイルを保存し、その完全なファイルパスをコピーします。
-
VSCodeのsettings.jsonに以下を追加する。 パスはコピーしたbatのファイルパスに置き換えてください。
"solargraph.commandPath": "C:\\Max\\solargraph.bat"
-
VSCodeを再起動する
なぜ上記の対処法で動くのか?
そもそもbatファイルとは?
- Windows用のスクリプトファイル
- ファイルを実行すると、PowerShellなどで使うWindowsコマンドを上から順番に実行してくれる
batの中で何をしているのか
- 前提
- Solargraphを実行するにはLinuxコマンドが必要
- VSCodeはWindows上にあるので、そのままだとLinuxコマンドが使えない
- やっていること
-
bash -c
- bashシェルを呼び出し、-c 以下の箇所をコマンドとして解釈させる
-
"{{SOLARGRAPH_PATH}} %*"
- solargraphのパスを渡して実行させている
-
結論
VSCode上でbatファイルのパスを指定して実行->
batファイルの中身でbashシェルを呼び出してLinux上でsolargraphを実行->
動く