2017/01/10分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Deprecate reflection class name to accept a class
activerecord/lib/active_record/reflection.rb
の修正です。
reflectionのclass_name
オプションにClassを渡すのがdeprecateになりました。今後は必ずStringで渡す必要があります。
# NG belongs_to :client, class_name: Company # OK belongs_to :client, class_name: 'Company'
Classを指定するとmodelのeager loadが発生してしまい、循環依存になってしまう可能性が高い為よくないだろう、という事でdeprecateになったようです。
Test --skip-git
generator option
railties/test/generators/app_generator_test.rb
の修正です。
rails new
コマンドに--skip-git
オプションを指定した場合のテストを追加しています。
が、実は既に同じテストがあり、後ほどreverされています。
activerecord/test: Fix Mysql2ConnectionTest#test_execute_after_disconnect
activerecord/test/cases/adapters/mysql2/connection_test.rb
の修正です。
disconnect実行後にSQLをexecuteした場合にエラーになる事を確認するテストで、エラーのクラスがMysql2::Error
である事を確認するようassertionを追加しています。
Suppress deprecation message to has_and_belongs_to_many
only once
activerecord/lib/active_record/associations.rb
の修正です。
has_and_belongs_to_many
のclass_name
オプションにClassを指定した場合、先ほど対応されたdeprecateメッセージが3回表示されてしまっていたので、一度だけ表示されるよう修正しています。
Improve deprecation message for deprecated reflection class name
activerecord/lib/active_record/reflection.rb
の修正です。
reflectionのclass_name
オプションにClassを渡した際のdeprecationメッセージ内の、変更後の対応内容について記載している箇所にexampleが記載されていたのを、具体的な対応内容を表示するよう修正しています。
Please pass the class name as a string: - `belongs_to :client, class_name: 'Company'` + `#{macro} :#{name}, class_name: '#{options[:class_name]}'`
sqlite3_mem tests are broken since 79887593c18919fed49f441d64236362cb755872
activerecord/test/cases/tasks/database_tasks_test.rb
の修正です。
create_all
taskのテストで、establish_connection
メソッドの呼び出しをstubするよう修正しています。
reestablish previous connection after creating all databasesでcreate_all
taskでestablish_connection
メソッドを呼び出して元のconnectionの再接続を行うようにしたのですが、in_memory databaseを使用している場合再接続が出来ず(connectionが閉じた時点で最初に作成したin_memory dbが消えてしまう為。多分)エラーになっていた為、呼び出しをstubするようにしたようです。
Reconnecting AR::Base's connection breaks sqlite3_mem tests
activerecord/test/cases/connection_pool_test.rb
の修正です。
connection接続に関するnotificationを確認するテストで、ActiveRecord::Base
のconnectionの再接続をしていたのを、テスト用のmodelを作成し、そちらで再接続処理を行うよう修正しています。
こちらも先ほどのコミット同様、in_memory databasesを使用している場合にActiveRecord::Base
のconnectionを切断してしまうと、DB自体が消えてしまうため。多分。
Use temporary connection pool for the tests clearing AR::Base's active_connections
activerecord/test/cases/query_cache_test.rb
の修正です。
query cacheのテストで、active connectionをclearする際に、元々保持していたconnectionとは別にtempraryのconnetion poolを作成し、そちらをclearするよう修正しています。そして、テスト終了後に元のconnectionを再度使用するようにしています。元のconnectionが失われてしまうと、in_memory databaseを使用している場合に最初に作成したDBに再接続出来ない為、のようです。
Make time travel work with subclasses of Time/Date/Datetime
activesupport/lib/active_support/testing/time_helpers.rb
の修正です。
time travel使用後にTime/Date/Datetimeの子クラスでtravel対象のメソッドを呼び出した際に、その子クラスのインスタンスではなく、親クラスのインスタンスが返ってきてしまっていたのを、呼び出した子クラスのインスタンスを返すよう修正しています。
# before Zip::DOSTime.now.class # => Zip::DOSTime travel_to 1.day.ago Zip::DOSTime.now.class # => Time # after Zip::DOSTime.now.class # => Zip::DOSTime travel_to 1.day.ago Zip::DOSTime.now.class # => Zip::DOSTime
activerecord/test/cases/query_cache_test.rb
の修正です。
使用するpoolに誤りがあったのを修正しています。先ほどのquery cacheのテストの修正時のタイポ修正。
Merge pull request #27628 from y-yagi/revert_27619
rails new
コマンドに--skip-git
オプションを指定した場合のテストを追加した、Test --skip-git
generator optionをrevertしています。同様のテストが既にあった為。
Merge pull request #27613 from prathamesh-sonpatki/add-missing-entry-to-release-notes
rails guideのRuby on Rails 5.0 Release Notes
の修正です。
render
メソッドにblockを渡せるようにした、Make possible to use blocks with short version of render partialについてのエントリーを追記しています。