2023/07/10分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
activemodel/CHANGELOG.md
Active Record commit transaction on return
, break
and throw
Active Recordの修正です。
transaction block内でreturn
、break
、throw
を使用した場合に、transactionをrollbackするかcommitするかをconfig(config.active_record.commit_transaction_on_non_local_return
)で指定出来るよう修正しています。
Rails 6.0までは、transaction block内でreturn
、break
、throw
を使用した場合にtransactionをcommitするようになっていたのですが、timeout gemの挙動の変更(timeout時にthrow
を使用)に伴い、rollbackを行うよう挙動の変更が行われました。しかし、timeout gem 0.4.0で再度exceptionをraiseするようtimeout gemの挙動が戻った為、transaction block内でreturn
、break
、throw
を使用した場合にtransactionをcommitすることが再度出来るようになりました。
元の挙動が自然だろうと考えられていた為、既存の挙動を壊さず再度元の挙動を使用出来るようにする為、config.active_record.commit_transaction_on_non_local_return
がtrueの場合はcommit、falseの場合はrollbackを行うよう対応しています。
Merge pull request #48698 from basecamp/active-model-load-hook
activemodel/lib/active_model/model.rb
の修正です。
ActiveModel::Model
load時に実行するhook(active_model
)を追加しています。
Merge pull request #48690 from adrianna-chang-shopify/ac-merge-target-list-cpk-fix
activerecord/lib/active_record/associations/collection_association.rb
の修正です。
composite primary keyを使用しているassociationで、primary keyの1つにid
を使用している場合に、persistedデータとin-memoryのデータをマージする際にid
がnilになってしまうバグがあったのを修正しています。
Improve QueryCacheMutableParamTest
activerecord/test/cases/query_cache_test.rb
の修正です。
QueryCacheMutableParamTest
でテスト用のpayloadを作成するのにHash
のsubclassを使用していたのを、Struct
を使用するよう修正しています。Hash
だとPredicateBuilder
でdup
が実行される処理が行われてしまい、値が変わらない事を確認するテストが行えない為。