vscode と steep を連携させて ruby の型検査などをしてみる
概要
vscode と steep を連携させてみたので導入手順や感想などを書きます。
steep は型検査をしてくれる gem です。
LSP の機能もあるので入力補完などもしてくれます。
導入手順
steep-vscode のインストール
まず vscode の拡張機能 steep-vscode をインストールします。
https://marketplace.visualstudio.com/items?itemName=soutaro.steep-vscodesteep のインストール
steep-vscode は bundle exec で steep を動かすらしいので Gemfile を用意して steep を追加します。
bundle init
bundle add steep
Steepfile の作成
Steepfile も必要なので用意します。
bundle exec steep init
今回は Steepfile の中身をこんな感じにします。
check はディレクトリ単位でも指定できますが今回は最小限に app.rb だけチェックします。
target :app do
signature 'sig'
check 'app.rb'
end
ruby のコードを書く
app.rb というファイルを作り適当にコードを書きます。
class N
def one
1
end
end
rbs ファイルの作成
typeprof で rbs ファイルを生成します。
typeprof は ruby の型解析を行ってくれる gem です。
ruby 3.0 から ruby 本体に同梱されるようになったらしいです。
mkdir sig
typeprof app.rb -o sig/app.rbs
生成された app.rbs の中身はこんな感じです。
# TypeProf 0.21.2
# Classes
class N
def one: -> Integer
end
動作確認
app.rb を書き換えてみます。
class N
def one
1.to_s
end
end
入力補完や型検査が動作しています。
入力補完
型検査
感想
とりあえず始めるだけなら思ったより簡単でした。
bundle gem をした時の雛形にも rbs ファイルが含まれるようになったみたいですし、今後 rbs ファイル付きの gem がリリースされていけば便利になりそうです。
ただ、今のところ rails プロジェクトに導入しようとすると結構頑張る必要がありそうでした。
あと、定義元にジャンプしようとすると ruby のコードではなく rbs の方にジャンプするようになっているみたいです。
他には rbs ファイルを更新しても vscode 上で反映されないのも気になっています。もしかしたら remote container で試したせいかもしれないです。現状はコマンドパレットで steep を restart して対処しています。
また steep の他に solargraph も rbs に対応する予定らしいのでそちらも気になっています。