なるようになるブログ

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

rails commit log流し読み(2019/10/01)

2019/10/01分のコミットです。

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

activerecord/CHANGELOG.md


Merge pull request #35915 from bernardoamc/allow-has-secure-token-length-manipulation

activerecord/lib/active_record/secure_token.rbの修正です。

has_secure_tokenメソッドでにtokenの長さを指定出来るよう修正しています。長さは24以上の値が指定出来るようになっています。

has_secure_token :default_token             # 24 characters
has_secure_token :auth_token, length: 36    # 36 characters
has_secure_token :invalid_token, length: 12 # => ActiveRecord::SecureToken::MinimumLengthError

Keep Object#fork private

activesupport/lib/active_support/fork_tracker.rbの修正です。

Introduce a callback for forked childrenObject#forkの可視性をpublicに変更してしまったのを、Ruby本体同様にprivateに戻しています。


Also override Kernel#fork

activesupport/lib/active_support/fork_tracker.rbの修正です。

fork実行時にcallbackを実行する為の仕組で、Kernel#forkに対するオーバーライドが不足していたのを追加しています。


Decrease the precision of the sec_fraction in the tests

activesupport/test/core_ext/time_ext_test.rbの修正です。

sec fractionのテストでチェックする値の精度を下げるよう修正しています。

元々はピコ秒までチェックしていたのですが、Rubyの実装によってはナノ秒までしかサポートしていない為、ナノ秒までチェックするよう修正しています。


Fix fraction float assertions in time_ext_test

activesupport/test/core_ext/time_ext_test.rbの修正です。

先の修正で値をチェックするのにRationalを使うよう修正したのですが、Rationalsec_fractionだと結果のチェックが正しく行えない(戻り値が異なる)、という問題がある為、to_rで変換した値でチェックするよう修正しています。


Always use 28 characters for Active Storage keys

activestorage/app/models/active_storage/blob.rbの修正です。

has_secure_tokenメソッドでにtokenの長さを指定出来るようにした対応の影響で、Active Storageのblogで生成するkeyが想定外の値になるようになってしまっていたのを、明示的にlengthを指定するよう修正しています。


Include connection in cached query notifications

activerecord/lib/active_record/connection_adapters/abstract/query_cache.rbの修正です。

query cacheから結果を取得した場合のsql.active_record instrumentationのpayloadにconnection objectを追加しています。DBから結果を取得した場合には既にconnection objectを含むようになっており、挙動を合わせる為。


Avoid making query when using where(attr: [])

activerecord/lib/active_record/relation.rbactiverecord/lib/active_record/relation/where_clause.rbの修正です。

where(attr: [])を実行した場合に、クエリー(WHERE 1=0になっていた)を実行せずに空の配列を返すよう修正しています。


Use assert_queries since we are only checking for the count

activerecord/test/cases/relation_test.rbの修正です。

SQLが何回実行されたかをチェックするのにcapture_sqlを使用していたのを、assert_queriesを使用するよう修正しています。


Remove any precision problem by comparing the float values

activesupport/test/core_ext/time_ext_test.rbの修正です。

to_rによる結果の比較だとやはり問題になる実行系があるとの事で、RationalではなくFloatの値でチェックするよう修正しています。


Delay ActionDispatch::Response configuration to load-time

actionpack/lib/action_dispatch/http/response.rbactionpack/lib/action_dispatch/railtie.rbの修正です。

ActionDispatch::Responseの用のload hookを追加し、ActionDispatch::Responseに関するconfigをクラスロード時に行うよう修正しています。

クラスロード時にconfigの指定を行わないと、initializerでActionDispatch::Responseに関するconfigを指定した場合にそれが正しく反映されない為。