2021/08/09分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
- Added support for multiple databases to
rails db:setup
andrails db:reset
. - Add
ActiveRecord::QueryLogs
.
Add database specific setup and reset tasks
activerecord/lib/active_record/railties/databases.rake
の修正です。
複数DBの設定がされている場合に、各DB向けのdb:setup
、及び、db:reset
taskを作成するよう修正しています。
Implement support for before_remove_const in zeitwek mode
activesupport/lib/active_support/dependencies/zeitwerk_integration.rb
の修正です。
Zeitwerk 2.5で追加されるon_unload
hookのようの処理を追加しています。
Deletes an AJ test that used classic
activejob/test/cases/test_helper_test.rb
、
activejob/test/jobs/queue_adapter_job.rb
の修正です。
classic autoloaderの挙動に依存しているテストがあったのを削除しています。
Deletes classic test related to STI
activerecord/test/cases/inheritance_test.rb
の修正です。
autoload pathを変更した場合のSTIの挙動についてのテストを削除しています。Zeitwerk側の挙動の問題で、Zeitwerkでテストしている内容の為。
Active Recordの修正です。
Active Recordで生成されるSQLに、SQLがどの処理で実行されたSQLなのかをコメントで追加するよう対応しています。basecamp/marginaliaをRails本体に導入した形です。
コメントにはアプリケーション名 + どのcontrollerやjobで実行されたのか、という情報が含まれるようになっています。
class BooksController < ApplicationController def index @books = Book.all end end
上記Book#index
で実行されたBook.all
の場合、
SELECT * FROM books /*application:MyApp;controller:books;action:index*/
というSQLが実行されるようになっています。
コメントの値はconfig(config.active_record.query_log_tags
)で変更出来るようになっており、任意の値を指定する事も可能です。
config.active_record.query_log_tags = [ :application, :controller, :action, { custom_static: "foo", custom_dynamic: -> { Time.now } } ]