なるようになるブログ

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

rails commit log流し読み(2017/03/16)

2017/03/16分のコミットです。

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

activesupport/CHANGELOG.md


Merge pull request #28412 from benoittgt/add_doc_for_message_encryptor_new

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

ActiveSupport::MessageEncryptor#initializeメソッドのdocに、メソッドの引数にsignature keyを指定した場合のexampleを追加しています。


Merge pull request #28426 from mtsmfm/fix-fragile-test

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

default scoping + threadに関するテストを、別クラスに切り出してテストを行うよう修正しています。

Ensure test threads share a DB connectionでdefault scopingのテスト全体に対してuse_transactional_tests = falseを設定していました。が、それにより残ってしまうfixtureの後処理が漏れており、テストの実行順によりテストが壊れてしまっていました。

その対応として、後処理を追加するのではなく、そもそもuse_transactional_testsをfalseにする必要があるテスト(threadが絡むテスト)だけを別クラスに切り出して、そちらのクラスのuse_transactional_testsをfalseにするよう修正したようです。


Revert #27850 following test breakage (#28427)

perform_enqueued_jobsメソッドにonlyオプションを指定した場合に、onlyオプションに指定した以外のjobがenqueueされないようになっていたのを、enqueueはされるよう修正した、Feature/active job test helper by apaulyをrevertしています。

元々の挙動(enqueueされない挙動)が意図通りだった為、との事です。


Remove unnecessary params munging

actionpack/lib/action_dispatch/routing/route_set.rbの修正です。

ActionDispatch::Routing::RouteSet#recognize_pathメソッドで、異なるroutesで設定されたparamsが参照出来るバグがあったのを修正しています。

# routes
get "/class/:foo", to: "pages#show", constraints: PageConstraint.new(:foo, /foo/)
get "/class/:bar", to: "pages#show", constraints: PageConstraint.new(:bar, /bar/)
# before
recognize_path("/class/bar")
# => {:controller=>"pages", :action=>"show", :foo=>"bar", :bar=>"bar"}

# after
recognize_path("/class/bar")
# => {:controller=>"pages", :action=>"show", :bar=>"bar"}

beforeの方だと、本来存在しない筈の:foo=>"bar"がいるのですが、これは最初のconstraintのチェックの際に設定されたparamsが使われてしまっていた為でした(paramsのマージ処理が行われてしまっていた)。


Tweak 28412

activesupport/lib/active_support/message_encryptor.rbメソッドのdocの修正です。

ActiveSupport::MessageEncryptor#initializeメソッドのdoc内のsignature keyを指定した場合のexampleの値を、signature_keyからsignature_secretに変更しています。うーん、元のkeyのままで良さそうな気もするんですけどね。


Merge pull request #28368 from y-yagi/add_test_for_secrets_command

railties/test/commands/secrets_test.rbの修正です。

secrets:editコマンドを実際に使用してファイルの読み込みを行った場合のテストを追加しています。


Merge pull request #28147 from kmcphillips/master-time-freeze

Active Supportの修正です。

freeze済みのTimeクラスのオブジェクトでto_timeメソッドを呼び出した場合に、RuntimeErrorが発生してしまうバグがあったのを修正しています。

source = Time.new(2016, 4, 23, 15, 11, 12, 3600).freeze
# => 2016-04-23 15:11:12 +0100
source.to_time
# => RuntimeError: can't modify frozen Time

Move to_time to DateTime compatibility.rb file

activesupport/lib/active_support/core_ext/date_and_time/compatibility.rbactivesupport/lib/active_support/core_ext/date_time/compatibility.rbの修正です。

Time、及びActiveSupport::TimeWithZoneクラスで使用する為のto_timeメソッドの実装が、activesupport/lib/active_support/core_ext/date_and_time/compatibility.rbに定義されていたのをactivesupport/lib/active_support/core_ext/date_time/compatibility.rbに移動しています。

Timeクラスに関する処理なので、date_time/compatibility.rbにある方が適切だろうとの事のようです。


Fix test warnings

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

テストでRubyのwarning(ambiguous first argument; put parentheses or a space even after-‘ operator`)が出ていたので、括弧を追加し対応しています。