最近業務で、とあるwebツールを作っており、いわゆる入力画面が必要になった。
今回はRubyのプロジェクトだったので、アプリケーション自体はsinatra、
そのvalidatorとしてlyokatoさんのsinatra-formkeeper を使った。
これが大変便利!
さすがFormvalidator::Simpleを作っただけあって、
必要なものは揃っているし、使い方も上述のblogエントリを読めば、ほぼわかる。
ただ、「 入力値A
と 入力値B
が異なること」ということをしたい場合にこれをvalidateする機構がなかった。
今回はこれがピンポイントで欲しい機能だったのでサクっとPRを投げて、取り込んでもらった。
Validatorとしてのコア機能はformkeeperに切り出されているので、PR自体はそちらに対してのものになっている。
さっそくmergeしてもらい、rubygemsからも拾えるようになった。
使い方はこんな感じ。
テストも合わせて貼っておきます。
実装自体は99%が既存の機能である same
のパクリ。
same
は上述のブログ例に書かれている通り、パスワード確認の時などに用いられるでしょう。
対して今回の diff
は例えば登録しているメールアドレスの更新や、パスワードの定期更新などに用いられる事を想定してます。
(※ パスワードを定期的に更新するセキュリティポリシーとその運用の是非についてはここでは言及しません)
まぁ、今回の業務ではそのどちらでもないケースで必要になったパッチ送ったのですがw
なので、きっと他でも有用なところがある(かもしれない)!
繰り返しになるけど、sinatra-formkeeper 自体がそもそも便利なので、
まとめとしてはそれが便利ということが伝われば良しです。