2019/02/09分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Merge pull request #34618 from bogdanvlviv/fix-elapsed-time-calculations
Active Record、Active Supportの修正です。
elapsed timeの計算をするのにConcurrent.monotonic_time(使用出来ればProcess.clock_gettime(Process::CLOCK_MONOTONIC)を使用、JRubyの場合java.lang.System.nanoTime()を使用)を使用するよう修正しています。
Refactor to just use Association#target= in associate_records_to_owner
activerecord/lib/active_record/associations/preloader/association.rbの修正です。
Preloader::Association#associate_records_to_ownerメソッドでrecordを指定するのにAssociation#target=メソッドを使用するようリファクタリングしています。
これにより、loaded!メソッドに明示的な呼び出しが不要になる(target=メソッドでloaded!が実行される為)のと、Preloaderを直接使用した場合の挙動を古いバージョンと合わせる為修正しています。とはいえPreloaderはprivate APIなので使用しないでくださいね。
Add 'Hash#deep_transform_values', and 'Hash#deep_transform_values!'
activesupport/lib/active_support/core_ext/hash/deep_transform_values.rbの修正です。
Hashにdeep_transform_valuesメソッド及びdeep_transform_values!メソッドを追加しています。ネストしたHash / Arrayに対してtransform_values(!)を実行するメソッドです。
hash = { person: { name: 'Rob', age: '28' } }
irb(main):004:0> hash.deep_transform_values { |value| value.to_s.upcase }
#=> {:person=>{:name=>"ROB", :age=>"28"}}
先のHash#deep_transform_values(!)メソッドの対応の際に不要な空ファイルが追加されていたのを削除しています。
Use Ruby 2.4+ native transform_values(!)
activesupport/lib/active_support/core_ext/hash/deep_transform_values.rbの修正です。
Hash#deep_transform_values(!)メソッドで値の変換にRuby nativeのtransform_values(!)メソッドを使用するよう修正しています。
Remove redundant returning object
activesupport/lib/active_support/core_ext/hash/deep_transform_values.rbの修正です。
_deep_transform_values_in_object!メソッドから不要な戻り値の指定を削除しています。
rubocopの設定に違反している箇所があったのをまとめて修正しています。
Refactor to extract defining column methods as define_column_methods
Active Recordの修正です。
個別に行っていたcolumn methodsの定義処理をdefine_column_methodsというメソッドを作成し、そちらのメソッドで行うよう修正しています。
short-hand methodを簡単に扱えるようにする為。