rigor-sorbet
既存のSorbetコードベースを型ソースとしてRigorに読ませます。インラインのsig { ... }ブロック、RBIファイル、そしてT.let / T.cast / T.must / T.unsafe / T.bind / T.assert_type! / T.absurdのアサーション形式がRigor独自のキャリア(carrier)へ翻訳されるため、RBSで何も書き直すことなくsrb tcと並べてrigor checkを実行できます。ソースのみを読み ── sorbet-runtimeはロードしません。
これはrigortypeにバンドルされて配布されます。plugins:の下で有効化してください。
plugins: - rigor-sorbet完全ガイド。このページは運用上のクイックリファレンスです。完全なウォークスルー ── Sorbet→Rigorの型語彙テーブル、すべてのアサーション形式、RBI / Tapioca-DSLの扱い、sigilのセマンティクス、
T.absurdの網羅性、そして移行パターン ── はハンドブック第10章 ── Sorbetとの共存にあります。
plugins: - gem: rigor-sorbet config: enforce_sigil: true # default; honour `# typed:` sigils rbi_paths: ["sorbet/rbi"] # default; set [] to disable RBI loadingenforce_sigil(デフォルトtrue) ── Sorbet自身の契約(contract)を反映します。# typed: true以上の厳格度のファイルからのみsigを記録します。falseに設定すると、sigilに関係なくパース可能なすべてのファイルからsigを記録します。インラインのアサーション認識器(recognizer)(T.let、T.cast、…)は、ユーザーが意図的に書いたものなので常に発火します。rbi_paths(デフォルト["sorbet/rbi"]) ── ロードする.rbiファイルのディレクトリ(標準のTapiocaサブディレクトリgems//annotations//dsl//shims/は再帰により参加します)。[]に設定するとオプトアウトでき、ベンダリングしたツリーを追加することもできます。
スコープと制限
Section titled “スコープと制限”このプラグインは入力側専用です。Sorbetの構文をRigorの型モデルへ翻訳します。Sorbetのチェッカーを実行することも、sorbet-runtimeを同梱することも、Sorbetのランタイム保証を強制することもしません。RBSのsigとSorbetのsigが食い違う場合は、RBSが優先されます(Sorbetのsigは絞り込めますが、矛盾することはできません)。翻訳テーブルの外にある形式(T.proc、T.self_type、T::Struct / T::Enumのサブクラス、…)はDynamic[Top]に劣化します。第10章が完全な語彙とこれらのエッジケースを記述しています。
プラグイン内部
Section titled “プラグイン内部”スライス(slice)ごとの実装(sigのパース、アサーションのリフティング、RBIツリーウォーカー、ミックスインチェーンの解決、ディスパッチャーのティア順序)、ソースレイアウト、デモはプラグインのREADMEにあります。設計の根拠はADR-11です。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.