vscode と steep を連携させてみたので導入手順や感想などを書きます。
steep は型検査をしてくれる gem です。
LSP の機能もあるので入力補完などもしてくれます。
まず vscode の拡張機能 steep-vscode をインストールします。
https://marketplace.visualstudio.com/items?itemName=soutaro.steep-vscodesteep-vscode は bundle exec で steep を動かすらしいので Gemfile を用意して steep を追加します。
bundle init
bundle add steep
Steepfile も必要なので用意します。
bundle exec steep init
今回は Steepfile の中身をこんな感じにします。
check はディレクトリ単位でも指定できますが今回は最小限に app.rb だけチェックします。
target :app do
signature 'sig'
check 'app.rb'
end
app.rb というファイルを作り適当にコードを書きます。
class N
def one
1
end
end
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 に対応する予定らしいのでそちらも気になっています。