Tech Racho エンジニアの「?」を「!」に。
  • Ruby / Rails関連

Rails 7.1: バックグラウンドジョブのenqueue呼び出し元をログ出力可能になった(翻訳)

Rails 7.1: バックグラウンドジョブのenqueue呼び出し元をログ出力可能になった(翻訳)

このブログ記事はRails 7シリーズの一環です。

Rails 7.1のActive Jobに、バックグラウンドジョブのenqueue呼び出し元をログ出力する新しいオプションが導入されました。これはジョブがどこでエンキューされたかという情報を提供するので、デバッグで非常に有用です。ログ出力は以下のようになります。

[ActiveJob] Enqueued NotifySubscribersJob (Job ID: 5945980f-303e-4c3f-af5b-e22be170f7c5) to Sidekiq(default)
[ActiveJob] ↳ app/models/post.rb:14 in `notify_subscribers`

上のログを調べれば、Postモデルのnotify_subscribersメソッドで
NotifySubscribersJobというジョブがエンキューされたことがすぐにわかるので、ジョブがどこから来たかを明確に把握できるようになります。

この機能を有効にするには、config/environments/development.rbで以下のコンフィグを設定する必要があります。

# config/environments/development.rb
config.active_job.verbose_enqueue_logs = true

ただし、Rails 7.1ではこのdevelopment環境のコンフィグがデフォルトで有効になります。

重要なのは、production環境で冗長なエンキューログを有効にするのは推奨されていないことです。この機能で使われているRubyのKernel#callerメソッドは遅い可能性があるためです。

詳しくは#47839をご覧ください。

関連記事

Rails: SidekiqはActive Jobを経由せずに直接使おう(翻訳)


CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。