[Rails][Sorbet] 関連gemについて

最近は下記gemを使っています。

1
2
3
4
5
6
7
gem 'sorbet-rails' # Rails周りの動的に生成されるメソッドの型を生成できる+諸々Railsで扱う際の便利機能付き
gem 'sorbet-coerce' # 諸々のcastが便利(sorbet-railsが内部的に利用。organizationもsorbet-railsと同じ。)

group :development do
  gem 'tapioca' # 個人的にはsrb rbi gemsの代替として使用。Railsじゃない部分ならsorbetとこれだけで十分な気がしている
  gem 'rubocop-sorbet', require: false
end

Rails関連の型生成はすべてsorbet-rails使っています(今のところbin/tapioca dslは使わない方向でいっています)。ただ、tapiocaのがShopify下リポジトリで相対的に活動も活発そうなのでsorbet-railsに依存するよりもtapiocaに依存しきるほうが安心(かつ安全)かもしれないです。sorbet-railsはRailsのenum上書きして破壊したりもしている状態なので…

https://github.com/sorbet/sorbet/issues/3883 であげられてるように srb rbi gems の挙動が怪しい(というか辛い)のでこの部分をtapiocaに任せる形(bin/tapioca gem)にして使っています。

型生成周りは下記のコマンド群を叩いて使っています。

1
2
3
4
5
srb rbi sorbet-typed # 最近公式ドキュメント見たところ bin/tapioca annotations 使う流れになりそう
bin/rails rails_rbi:all
bin/tapioca gem --workers=8
bin/tapioca todo # classに書き換えが必要になることがあるので全コマンドを何も考えずに叩くわけにはいかなそう
srb rbi suggest-typed

もう少しエコシステムが成熟すれば色々考えてコマンドたたく必要もなくなりそうです。

Built with Hugo
テーマ StackJimmy によって設計されています。