/sinatra-sorbet-sample

Sorbetの型チェックを試してみるサンプル

Primary LanguageRubyMIT LicenseMIT

sinatra-sorbet-sample

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を追加するとき

Gemfile更新時

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ファイルを書きたいとき

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.

https://sorbet.org/docs/rbi#hand-written-rbis-for-gems

なお、手動で書いた 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