はじめに
Rails 6 に追加されそうな新機能を試す第48段。 今回は、 Duration
編です。
Rails 6 では、 Duration
の計算で小数点以下が丸められることが無くなりました。
Ruby 2.6.3, Rails 6.0.0.rc1, Rails 5.2.3 で確認しました。Rails 6.0.0.rc1 は gem install rails --prerelease
でインストールできます。
$ rails --version
Rails 6.0.0.rc1
簡単なスクリプトを作る
今回は、動作確認用の簡単なスクリプトを書いて確認します。
bin/duration.rb
duration = 0.4.seconds
d = DateTime.parse('2019-01-01')
d += duration
d += duration
d += duration
d += duration
d += duration
p d > DateTime.parse('2019-01-01')
p d == DateTime.parse('2019-01-01')
Rails 5 では
0.4.seconds
を足すとき 整数に丸められて 0.seconds として加算されてしまいます。
結果、 0.4.seconds
を5回足す前も後も変化がありません。
$ bin/rails runner bin/duration.rb
false
true
Rails 6 では
整数に丸められることが無くなったので、より正確な値が得られるようになります。
$ bin/rails runner bin/duration.rb
true
false
試したソース
試したソースは以下にあります。
https://github.com/suketa/rails6_0_0rc1/tree/try048_duration