コンテンツにスキップ

rigor-dry-types

dry-rbファミリーの基盤プラグインです。標準的なdry-typesのエイリアスモジュール—

module Types
include Dry.Types()
end

—を認識し、それが生成するエイリアス名を、基底となるRubyクラスへ解決できるようにします。そしてそれらをクロスプラグインのファクト(fact、:dry_type_aliases)として公開します。これはrigor-dry-structrigor-dry-schemarigor-dry-validationが消費します。

rigortypeにバンドルされて配布されます。これを消費するdry-rbプラグインと一緒に有効化します。

plugins:
- rigor-dry-types
- rigor-dry-struct
# - rigor-dry-schema / rigor-dry-validation as needed

このプラグインはdiagnosticを一切出さずconfigキーも持ちません。他のdry-rbプラグインに型情報を供給するだけなので、その目に見える効果はそれらを通じて表面化します(Types::String型の属性が下流で解決される、など)。

  • 標準的なショートカットTypes::String / Integer / Float / DecimalBigDecimal / Bool / Date / Hash / Array / AnyObject、その他。
  • 強制変換カテゴリーの名前空間Coercible:: / Strict:: / Params:: / JSON::配下の同じ名前(基底のクラスは共有し、違いは実行時の強制変換にあります)。
  • ネストしたエイリアスモジュールmodule App; module Types; include Dry.Types(); end; endApp::Types::Stringなどを公開します。
  • ユーザーが書いた単一ヘッドの合成Email = String.constrained(format: …)Status = Strict::SymbolPositiveInt = Integer.constrained(gt: 0).optionalはヘッドの基底クラスのもとで公開されます。

ユニオン型(union type、String | Integer)、インターセクション型(intersection type、交叉型とも)、および他の合成への推移的な参照(ManagerEmail = Email)はスキップされます。公開すべき単一の基底クラスが存在しないためです。

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

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