2020/05/17分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Merge pull request #39235 from hayesr/cte_alias_predication
activerecord/lib/arel/table.rb
、
activerecord/lib/arel/visitors/to_sql.rb
の修正です。
CTEを構築するのにArel::Nodes::As
を使用する必要があったのを、Arel::Table
から構築出来るよう修正しています。
Replace Hash#delete_if with Hash#compact!
activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
の修正です
nilの値をdelete_if
で削除している箇所を、compact
を使用するよう修正しています。
Use explicit spring boot loader (#39225)
railtiesの修正です。
binstubでSpringのロードを行っていたのを、configファイル(config/boot_with_spring.rb
)で行うようにしています。
configファイル内でdevelopment / envでのみSpringがロードされるよう制御されています。また、ENVにUNSPRUNG
を指定した場合にもSpringがロードされないようになっています。
Merge pull request #39249 from eugeneius/parameters_each_pair_each_value_enumerator
actionpack/lib/action_controller/metal/strong_parameters.rb
の修正です。
ActionController::Parameters#each_pair
/ each_value
をblock指定なしで呼び出した場合に、enumeratorを返すよう修正しています。Hashの挙動と合わせる為。
Merge pull request #39245 from paul-mannino/unload-app
railties/lib/rails/commands/encrypted/encrypted_command.rb
の修正です。
encrypted show / editコマンドでenvironmentをロードしないよう修正しています。credentialsが無くてもエラーにならないようにする為。
actionpack/lib/action_dispatch/testing/test_process.rb
の修正です。
fixture_path
が設定されている時にfixture_file_upload
メソッドでファイルのアップロードが行えないバグがあったのを修正しています。
Document how to reload at boot time [ci skip]
rails guideのAutoloading and Reloading Constants (Zeitwerk Mode)
の修正です。
application boot時のautoloadingの方法について説明した、Autoloading when the application boots
の項を追加しています。
The warning for autoloaded constants on boot includes a solution
railties/lib/rails/application/finisher.rb
の修正です。
initialization中にautoloading処理が実行された場合に出力するdeprecateメッセージに、reloader callback(Rails.application.reloader.to_prepare
)を使用すれば initialization中のAutoloadingが安全に出来る旨説明を追加しています。
Refactor build_joins
to use select_association_list
activerecord/lib/active_record/relation/query_methods.rb
の修正です。
build_joins
メソッド内のjoin listの生成処理をselect_association_list
メソッドを使用して行うようリファクタリングしています。
Remove sync_with_transaction_state
to simplify code base
Active Recordの修正です。
各処理からsync_with_transaction_state
メソッドの呼び出しを削除しています。
sync_with_transaction_state
はトランザクションに関連付けられている場合に、Active Record objectの状態がトランザクションの現在の状態を反映するようにする為のメソッドで、Active Recordのobjectをトランザクション内で大量に作成するとmemory bloatが発生するという問題の為に追加された処理でした。
この修正では、トランザクション内のレコードの状態を保持するのにWeakRef
を使用するようにして、memory bloatが発生しないよう対応を行っています。