クエリログコメントの先頭に追加するサポート

何?

既存のクエリログタグ機能の自然な拡張として、ActiveRecord::QueryLogs.prepend_comment のサポートを追加します。この新しい設定は、現在の RAILS_QUERY_LOG_TAGS 環境変数と並行して機能します。

なぜ?

クエリログタグはデバッグに非常に役立ちますが、注意点があります。長くて複雑なクエリを扱う場合、PostgreSQLなどのデータベースはログを切り捨てることがよくあります。この場合、クエリタグからの貴重なコンテキスト(デフォルトでは末尾に追加される)が切り取られ、アプリケーションのどの部分がクエリを生成したかを追跡することが困難になります。

prepend_comment を有効にすると、クエリタグは末尾ではなく、SQLクエリの先頭に移動します。これにより、クエリがログで切り捨てられた場合でも、コントローラー名、アクション名、ジョブ情報などの重要なデバッグ情報を引き続き確認できます。

どうやって?

この機能はオプトインであり、設定に関しては Discourse の既存のパターンに従います。

  1. クエリログタグを有効にする(まだ有効でない場合):RAILS_QUERY_LOG_TAGS=1
  2. コメントのプリペンドを有効にする:RAILS_QUERY_LOG_PREPEND_COMMENT=1

この機能は、両方の条件が満たされた場合にのみアクティブになります。クエリログタグが有効であり、コメントのプリペンドフラグが設定されている必要があります。これにより、後方互換性が維持され、オペレーターはログ設定を細かく制御できます。

実装PR:Add support for ActiveRecord::QueryLogs.prepend_comment by mudit-1996 · Pull Request #35888 · discourse/discourse · GitHub