なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2019/02/09)

2019/02/09分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activesupport/CHANGELOG.md


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の修正です。

Hashdeep_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"}}

Delete uneeded blank file

先の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!メソッドから不要な戻り値の指定を削除しています。


Fix rubocop violations

rubocopの設定に違反している箇所があったのをまとめて修正しています。


Refactor to extract defining column methods as define_column_methods

Active Recordの修正です。

個別に行っていたcolumn methodsの定義処理をdefine_column_methodsというメソッドを作成し、そちらのメソッドで行うよう修正しています。

short-hand methodを簡単に扱えるようにする為。