Rails 5.1.2がリリースされた

朝起きたら Rails 5.1.2 がリリースされている最中だった。

個人的に普遍的な影響がありそうだと思ったのが、ActiveSupport::Duration:: Scalar に手が入った以下 Fix implicit coercion calculations with scalars and durations の変更となる。

github.com

少しサンプルコードを書くとこのような振る舞いの違いになる。

Rails 5.1.1

2 * 1.day     #=> 172800 seconds
86400 / 1.day #=> 1 second

Rails 5.1.2

2 * 1.day     #=> 2 days
86400 / 1.day #=> 86400 days

このように 5.1.1 まで秒の duration に変換していたものを、日の duration を維持するようになっている。

これまでのように秒の duration を返したいということであれば、86400 / 1.day.seconds といったように明示的に秒への変換をした上で処理をすると良いと思う。