2018-02-10

dry-struct, dry-types, dry-validation

Virtusの後釜とされるものたち。

dry-structとdry-typesは一緒に使うことが多そうな感じ。structのほうはDry::StructDry::Struct::Valueがあって、後者はfreezeされる。Virtusとの違いとしては、読み取り専用になること、属性の管理をdry-typesが担うこと、dry-typesのメソッドに反応できることが挙げられる。dry-typesはdry-structで使う属性の型を規定することができる。dry-validationとの違いは、dry-typesがインスタンス化するデータの属性が意図したものかどうかをチェックするのに対して、dry-validationは外から入ってくるデータのチェックをするというところ?あと、MaybeとかMonadがある。

dry-validationはHashやArrayなどのデータに対してバリデーションするためのスキーマをオブジェクトとして作って再利用できる。述語論理が使えるのがおもしろい。つまり、implicationが使えるので、「Aが〜のときBが〜かどうか」のようなバリデーションがDSLで書ける。また、ActiveModel::Validationsより数倍速いらしい。

PoEAA

第1部「概論」を読み終えた。ここまでで、第2部で紹介されるパターンについての概要を把握した。なるほどRailsの元ネタも多く含まれているように感じる。ここからはパターンのカタログなので、とくに読む順番に制約はなさそうだが、とりあえず前から順に読む。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です