2016/11/01分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
allow ActiveRecord::Core#slice to use array arg
activerecord/lib/active_record/core.rb
の修正です。
ActiveRecord::Core#slice
の引数にArrayを渡せるよう修正しています。メソッドの中で引数をflatten
で展開してから使用するようにしています。
def slice(*methods) - Hash[methods.map! { |method| [method, public_send(method)] }].with_indifferent_access + Hash[methods.flatten.map! { |method| [method, public_send(method)] }].with_indifferent_access end
Ensure duration parsing is consistent across DST changes
activesupport/lib/active_support/duration.rb
の修正です。
ActiveSupport::Duration.parse
が、DSTをまたぐ期間を指定した場合に、正しい値を返さないバグがあったのを修正しています。
# before d = ActiveSupport::Duration.parse("P7D") #=> 7 days and 0 hours d == 1.week #=> false 1.week.to_i #=> 604800 d.to_i #=> 608400 # after d = ActiveSupport::Duration.parse("P7D") d == 1.week #=> true 1.week.to_i #=> 604800 d.to_i #=> 604800
修正内容は下記の通り
+ EPOCH = ::Time.utc(2000) def self.parse(iso8601duration) parts = ISO8601Parser.new(iso8601duration).parse! - time = ::Time.current - new(time.advance(parts) - time, parts) + new(EPOCH.advance(parts) - EPOCH, parts) end
元々はTime.current
とTime#advance
を使用して秒の値を計算しようとしていたのですが、Time#advance
自体がDST境界を考慮した値を返す為、現在時刻を元にして処理を行ってしまうと本来欲しい値と事なる値が返ってきてしまっていました(DST分がずれてしまう)。
で、それを避ける為に、現在時刻ではなくエポックを使用するようにしたようです。多分。むずい。
fix typo in Rails Test Runner section
rails guideのA Guide to Testing Rails Applications
の修正です。
The Rails Test Runner
の項のグラマーの修正を行っています。