Sorbetの型チェックを試してみるサンプル
- Ruby 3.1.2p20 x86_64-linux
- sorbet 0.5.10398
- tapioca 0.10.0
- sinatra 2.2.2
- VSCode 1.71.0
- Ruby Sorbet v0.3.15
- byesig v0.0.13
$ bundle exec rackup -p 8080
$ curl -s http://localhost:8080/30
{"message":[1,2,"Fizz",4,"Buzz","Fizz",7,8,"Fizz","Buzz",11,"Fizz",13,14,"FizzBuzz",16,17,"Fizz",19,"Buzz","Fizz",22,23,"Fizz","Buzz",26,"Fizz",28,29,"FizzBuzz"]}
$ bundle exec ruby test/runner.rb
$ bundle exec srb tc
VSCodeで補完が効いて便利
$ bundle exec srb typecheck --lsp --disable-watchman
※事前に .vscode/settings.json
記載の設定をしておく
Gemインストール後にGemのRBIを生成する。
#(Gemfileを編集してから)
$ bundle install
$ bin/tapioca gems
GemのRBIを強制的に再生成するには下記コマンドを使用する。
$ bin/tapioca gem --all
$ bundle install
$ bundle exec tapioca init
$ bin/tapioca require
rbi
ファイルを作成して sorbet/rbi/shims
に置く。
自前のコードの定義の他、自動生成されたGemの定義を編集したい場合もここに置けばよい。
When rbi-central does not have RBI files for a gem, tapioca init will still have created some autogenerated RBI files for that gem. These autogenerated files are a great way to start off writing hand-written RBIs for a gem! Simply copy the autogenerated file from the sorbet/rbi/gems/ folder to sorbet/rbi/shims/gems, and start modifying it by hand.
なお、手動で書いた rbi
ファイルはSorbet/Tapiocaの更新によって不要になる可能性がある。
不要な定義は下記コマンドでチェックできる。
$ bin/tapioca check-shims
As you migrate to newer versions of Sorbet or Tapioca, some shims may become useless as Sorbet's internal definitions for Ruby's core and standard library is enhanced or Tapioca is able to generate definitions for new DSLs. To avoid keeping outdated or useless definitions inside your application shims, Tapioca provides the check-shims command:
https://github.com/Shopify/tapioca#manually-writing-rbi-definitions-shims