ActiveSupportでDateTimeの出力形式か変わる
また、ActiveSupportの絡みで嵌ったのでメモ。
ActiveSupport は DateTime の to_s() のメソッドのデフォルト(引数無し)出力形式を変更してしまうらしい。
前回のLoggerの場合は、フォーマットを設定して対応したので今回もそれの類で、解決出来るだろうと調べたらやはりあった。以下のようなコードを追加すれば良い。
Time::DATE_FORMATS[:default] = "%Y/%m/%d %H:%d:%S"
ちなみに、:default は to_s() のデフォルト引数になっている。これ以外に :db 等、数種類ある。
関連して、ActiveSupport が DBI::Timestamp を DateTime に変換して持ってくることがあるので、どっちも同じコードで、同じ出力形式にしたい。
そこで、DBI::Timestamp を to_time で変換して to_sする。DateTime は to_time しても型は変わらないので to_s でどちらも同じ出力になる。