[Ruby][Sorbet] CIでRBIファイルの更新漏れを確認する方法

tapiocaに関しては–verifyオプションが用意されているのでそれを利用する

1
2
bin/tapioca gems --verify
bin/tapioca dsl --verify

sorbet-railsに関してはtapiocaのようなオプションが用意されていないようなので下記の感じで差分があるか確認する

1
2
3
bin/rails db:schema:load # ridgepoleを使っている場合にはridgepole --applyを。
bundle exec rake rails_rbi:all
git diff --exit-code --quiet

実際のところ現状だと各RBIのコンフリクト解消が関わってくるので自分は下記のような感じで対応しています

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
bundle exec srb rbi sorbet-typed
bin/rails db:schema:load
bin/rails rails_rbi:all
bin/tapioca gem --workers=8
bin/tapioca todo
bundle exec srb rbi suggest-typed # コンフリクト解消をここで行ってから差分がでないことを確認する。こうしないとコンフリクト解消前の状態とコンフリクト解消後の状態の比較になってしまい差分が頻繁に発生する状態になってしまいほぼ常にCIで引っかかる状態になってしまう

git diff --exit-code --quiet
if [ $? -ne 0 ]; then
    echo "Please resolve the difference of RBI files"
    exit 1
fi

参考:

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