それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

vscode で WSLの ruby版 を使う。

vscode で WSLの ruby を使う。

vs code をちょっと使おうと思うと、めっちゃめんどくさいのが wsl 経由でコマンドを使うことですね。

vscode のWSL環境内の実行に慣れていれば、大丈夫なはず。

通常であれば、VS CodeをWSL内部環境で起動して終わり。

今回は、敢えて通常のVS CodeWindowsワールド)からWSLのRubyを叩くことを通して、裏世界(WSL)とうまく連携ととっていく。

VS Codeが環境別の起動をしないようにして通常のWindowsのエディタと同じようにWSLを使う設定を模索してみる。

最初に知っていおく WSLワールドとcmd.exe ワールド

WSLとWindows異世界を相互に使う方法を知っておく。

Visual Studio CodeWindows側にあるので、Windowsのパスで実行される。rubyphppython などは、 windows側か、wsl 側にインストールする。

ruby などコマンドパス設定をすれば動くはずなんだけど。

リモート起動しなくても、rubypython の補完などなら、コマンドのパス設定をすれば動くはずなんだけど。

どうもうまくいかないので、状況整理して動かしてみた。

WSL ruby を cmd.exe から呼び出す。

wsl 版 ruby wsl にインストールしたものは、Windows側から次のように実行される。

wsl --exec ruby -v
wsl --exec python -V
wsl --exec php -v
wsl --exec php -v
wsl --exec bash --version
wsl --exec bash -c "/bin/echo 1;"

実行例

たとえば、ruby を実行するときには、この様になる。

C:\Users\takuya>wsl --exec ruby -v
ruby 2.5.5p157 (2019-03-15 revision 67260) [x86_64-linux-gnu]

逆もできる

逆もやっておく、WSLからWindows世界のコマンドを実行する。

cmd exe などWindowsのコマンドをWSLの世界から呼び出すこともできる。

takuya@wsl$ cmd.exe 
takuya@wsl$ cmd /C start ping 1.1.1.1

code コマンドを、wsl 側から 実行

WSL の世界からWindowsにあるCodeを起動する。

$ which code 
/mnt/c/Program Files/Microsoft VS Code/bin/code

visual studio code も、wsl とWindows(ローカル)に分かれる wsl 側から visual studio code は次のように呼び出される。

wsl / vscoderuby の設定をする。

visual studio code を WSL から使ってインストールする。

code --install-extension castwide.solargraph
code --install-extension rebornix.ruby

wsl 側から使うときは、wsl 側からコマンドを実行する。

通常のwindowsから vscoderuby を設定をする。

code --install-extension castwide.solargraph
code --install-extension rebornix.ruby

そのままだと動かない。

f:id:takuya_1st:20220405150106p:plain

ruby の solargraph を使う設定(ワークスペースへ)

solargraphを、gem インストールして上げる必要がある。gem を bundle でインストールするので「プロジェクト」のbundle でやる

ワークスペースで使うだけでなので、ワークスペースに全てをインストールする方針。

bundle config set path 'vendor/bundle'
bundle init
bundle add solargraph -g development
bundle install

wsl にある。bundle をwindowsから呼び出す。

C:\Users\takuya>wsl --exec bundle -v
Bundler version 1.17.3

wsl bundle を windows から呼び出しチェック

windows側から wsl にあるruby/bundle経由で solargraphを 起動してみる。

solargraph がインストールされていて、windows側から起動できる状態であるとわかる。

f:id:takuya_1st:20220405150252p:plain

vscode に設定する。

vscodewindowsから実行されるので、 bundle のパスがわからないので、wsl 経由で呼び出してあげる。

ruby を使うのはワークスペースなので、設定は ワークスペースで。

先程確認した、wsl -exec bundlevscode で設定

{
    "solargraph.bundlerPath": "wsl --exec bundle",
    "solargraph.useBundler": true
}

f:id:takuya_1st:20220405150303p:plain

動いた

https://blog.freks.jp/vscode-remote-wsl-boot-error/

.vscode のフォルダを削除してあげたら動いたよ。

f:id:takuya_1st:20220405150353p:plain

appdata フォルダを丸コピー

WSL側にapp dataを丸コピーしてあげてもいいけど。基本的には、動くんだけど、一部で不具合が出る

その他の解決方法

WSLのリモートを接続していれば問題ない。

wsl で起動してたらこんな面倒にならない。

wsl$ code . 

f:id:takuya_1st:20220405150421p:plain

f:id:takuya_1st:20220405150431p:plain

通常であればリモート起動をしてしまえばいいんだけど、パス設定で解決を試みたら結構沼だった。

パス設定で解決しないで、まるっとリモート側に入ることがVS Codeの魅力なんだなと改めて実感する。