コンテンツにスキップ

rigor-dry-schema

dry-schemaの宣言を認識し、スキーマごとの型付きキーテーブルをクロスプラグインのファクト(fact、:dry_schema_table)として公開します。rigor-dry-validationはこれを消費して型付きペイロードを合成します。rigor-dry-typesと同様、これは基盤プラグインです。独自のdiagnosticは持たず、configキーもありません。

rigortypeにバンドルされて配布されます。有効化するには次のようにします(述語の引数内のTypes::*エイリアスを解決するにはrigor-dry-typesと組み合わせます)。

plugins:
- rigor-dry-types # optional: resolves Types::Email etc.
- rigor-dry-schema
NewUserSchema = Dry::Schema.Params do
required(:email).filled(:string)
required(:age).value(:integer)
required(:tags).each(:string)
optional(:nickname).maybe(:string)
end
  • required / optionalキー。述語の型シンボルはRubyのクラスにマッピングされます(:stringString:integerInteger:decimalBigDecimal:boolTrueClass、…)。
  • each(:T)はそのキーをリストとしてマークします(list: true)。filled / value / maybeはスカラーです(list: false)。
  • value(Types::Email)rigor-dry-typesがロードされているとき:dry_type_aliasesファクトを通じて解決されます。それがない場合(または未知の参照の場合)は、下流の消費者を誤らせるよりも、その行をテーブルから外します。
  • トップレベル(Foo = Dry::Schema.Params { … })およびクラスレベル(class Bar; SCHEMA = …; end"Bar::SCHEMA")の宣言。.Params / .JSON / .defineのいずれにも対応します。

このプラグインは、他のプラグインが消費するためのスキーマテーブルを公開するだけです。diagnosticは一切表面化させず、configキーも受け付けません。(将来のスライス(slice)でdry-schema.unknown-predicate / unknown-type info diagnosticと型付きresult.to_h合成が追加されます。)

prepare(services)のスキャン、公開される:dry_schema_tableのシェイプ(shape)、そしてスライスのfloor/ceilingについてはプラグインのREADMEに記載されています。プラグインを書くにはexamples/rigor-plugin-authorスキルを参照してください。

© 2026 TypedDuck. Licensed under CC BY-SA 4.0.