うるう日なのでブログを書こう。
少し前に time_second という gem を作ってた。
https://github.com/toreta/time_second
時刻ではなく「何分」とかといった時間の長さだけを保存したり、それを開始時刻に足して終了時刻を出す、なんてことはままある。あるいみ時間にうるさいトレタでも、たとえば「1予約のデフォルトの時間 = 2時間」みたいな設定値を DB では INT 型のカラムに秒数で格納しておくというのを結構やってたりで、そういったときに便利なやつ。
使い勝手は ActiveSupport::Duration で build & parts してハッシュ取り出したのと似たような感じといえば感じ。
とはい実際のコードでは生ハッシュを取り回すのは書き味としてイマイチなのと、View で HH:MM:SS
とか HH:MM
といった文字列を生み出すときにも一手間だったりなので、型としての秒がほしいなぁ、というのがモチベーション。
そもそもこんな gem もうあるだろうと思って探したけど、類似するものはあるもののやっぱりどうにもちょっと観点が違うものだったのでシュッと。
こうなったら自分的には ActiveRecord の custom type がほしいのだけど、ActiveSupport というか Rails の複数バージョンでテストするのがめんどいのかあんまり custom type としての gem やそれをサポートしてる gem が意外にない。Rails plugin 系はどうやって複数 Rails 対応テストしてるのかなぁと思って kaminari みたらだいぶ頑張った感じになってたので、やっぱそういうのかなぁ。
ただ custom type は(例とした kaminari 比較だけど)テストすべき範囲も小さいし互換性考慮も ActiveSupport::Type はそんなにわちゃわちゃしてなかろうということで次のバージョンでやってみる。