ぶていのログでぶログ

思い出したが吉日

Ruby LSPのバージョンマネージャーにrtxを使う

Shopifyが出しているRuby LSPのVSCode拡張をrtx(asdf clone)で動かしてみようというのがこの記事。

code.visualstudio.com

結論

以下の実行ファイルをasdfという名前にしてPATHの通っているディレクトリに配置すれば動くはず。

#!/bin/bash

if [[ "$1" == "exec" ]]; then
    shift
    command=$1; shift
    set - exec $command -- $command "$@"
fi

exec rtx "$@"

動かない場合はrtxを最新バージョンにするとよさそう。

rtxではエラーになる

Ruby LSPではRubyのバージョンマネージャを利用することを前提に設計されている*1。 プロジェクトごとにRubyのバージョンを変更できるようにする措置であると思われる。 使用できるバージョンマネージャはいくつかあるのだが、(当然のように)rtxは選択できない。 rtx自体、asdfクローンなのだからrtxでもいけるだろ!!っと思い、雑にrtxに流すようなシェルスクリプトを書いたら以下のようなエラーになった。

どうもasdf execとrtx execのコマンドラインの解釈があるようで、前者の場合実行するコマンドの名前を省略することができ、後者の場合実行するコマンド名を含めたフルパスを指定しないといけないようだ。 つまり、 asdf exec ruby -v をrtxで実行する場合は rtx exec ruby -- ruby -vにしないといけない。 これをよしなにするのが、前述したスクリプトである。

asdf execの読み替えをうまくやればRuby LSPも正しく起動する。

Ruby LSPを使ってみた感想

まだ動作確認程度しか触っていないが、endキーワードを追加してくれるのは便利だなぁという感じw それ以外にも色々できるようになるっぽいので試していきたい。

*1:noneも選択できる