rigor-dry-validation
class T < Dry::Validation::Contractのサブクラスを認識し、契約(contract)クラス名の集合をクロスプラグインのファクト(fact、:dry_validation_contracts)として公開します。さらに、契約の結果API(Contract#call → Result、続いてResult#success? / #failure? / #to_h / #errors / #[])に型を付けるRBSオーバーレイを同梱します。
rigortypeにバンドルされて配布されます。plugins:の下で有効化します。
plugins: - rigor-dry-validation認識する対象
Section titled “認識する対象”class NewUserContract < Dry::Validation::Contract params do required(:email).filled(:string) required(:age).value(:integer) endendこのプラグインは、フルパスのDry::Validation::Contractと、字句的なDryの形Validation::Contractの両方を認識し、発見した契約名をソートしたリストを公開します。
RBSオーバーレイをロードした状態では(下記参照)、次のようになります。
result = NewUserContract.new.call(input) # Dry::Validation::Resultresult.success? # boolresult.to_h # Hash[Symbol, untyped]RBSオーバーレイ
Section titled “RBSオーバーレイ”このプラグインは、上記の結果APIに型を付けるRBSオーバーレイ(sig/dry_validation.rbs)を同梱しており、それを自動的に提供します——プラグインのマニフェストがsignature_paths: ["sig"]を宣言する(ADR-25)ので、rigor-dry-validationを有効化するだけで十分です;プロジェクト側のsignature_paths:配線は不要です。
diagnosticもconfigもなし
Section titled “diagnosticもconfigもなし”このプラグインは、契約リストとオーバーレイを公開します。diagnosticは一切出さず、configキーも受け付けません。(将来のスライス(slice)で、組み合わせたrigor-dry-schemaのparamsブロックからのresult.to_hの型付けと、契約ごとのruleキーのdiagnosticが追加されます。)
プラグインの内部構造
Section titled “プラグインの内部構造”prepare(services)のスキャン、:dry_validation_contractsファクト、RBSオーバーレイ、そしてスライスのfloor/ceilingについてはプラグインのREADMEに記載されています。プラグインを書くにはexamples/とrigor-plugin-authorスキルを参照してください。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.