なるようになるブログ

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

rails commit log流し読み(2021/08/09)

2021/08/09分のコミットです。

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

activerecord/CHANGELOG.md


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.rbactivejob/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でテストしている内容の為。


Add QueryLogTags to Rails

Active Recordの修正です。

Active Recordで生成されるSQLに、SQLがどの処理で実行されたSQLなのかをコメントで追加するよう対応しています。basecamp/marginaliaRails本体に導入した形です。

コメントにはアプリケーション名 + どの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 }
  }
]