rigor-dry-types
dry-rbファミリーの基盤プラグインです。標準的なdry-typesのエイリアスモジュール—
module Types include Dry.Types()end—を認識し、それが生成するエイリアス名を、基底となるRubyクラスへ解決できるようにします。そしてそれらをクロスプラグインのファクト(fact、:dry_type_aliases)として公開します。これはrigor-dry-struct、rigor-dry-schema、rigor-dry-validationが消費します。
rigortypeにバンドルされて配布されます。これを消費するdry-rbプラグインと一緒に有効化します。
plugins: - rigor-dry-types - rigor-dry-struct # - rigor-dry-schema / rigor-dry-validation as needed独自のdiagnosticはなし
Section titled “独自のdiagnosticはなし”このプラグインはdiagnosticを一切出さず、configキーも持ちません。他のdry-rbプラグインに型情報を供給するだけなので、その目に見える効果はそれらを通じて表面化します(Types::String型の属性が下流で解決される、など)。
認識する対象
Section titled “認識する対象”- 標準的なショートカット —
Types::String/Integer/Float/Decimal→BigDecimal/Bool/Date/Hash/Array/Any→Object、その他。 - 強制変換カテゴリーの名前空間 —
Coercible::/Strict::/Params::/JSON::配下の同じ名前(基底のクラスは共有し、違いは実行時の強制変換にあります)。 - ネストしたエイリアスモジュール —
module App; module Types; include Dry.Types(); end; endはApp::Types::Stringなどを公開します。 - ユーザーが書いた単一ヘッドの合成 —
Email = String.constrained(format: …)、Status = Strict::Symbol、PositiveInt = Integer.constrained(gt: 0).optionalはヘッドの基底クラスのもとで公開されます。
ユニオン型(union type、String | Integer)、インターセクション型(intersection type、交叉型とも)、および他の合成への推移的な参照(ManagerEmail = Email)はスキップされます。公開すべき単一の基底クラスが存在しないためです。
プラグインの内部構造
Section titled “プラグインの内部構造”prepare(services)のスキャン、公開される:dry_type_aliasesテーブル、そしてスライス(slice)のfloor/ceilingについてはプラグインのREADMEに記載されています。プラグインを書くにはexamples/とrigor-plugin-authorスキルを参照してください。
© 2026 TypedDuck. Licensed under CC BY-SA 4.0.