web-dev-qa-db-ja.com

デバッグのためにRailsコンソールでActiveJobを実行するにはどうすればよいですか?

現在、作成したActiveJobがあり、Sidekiqを使用してキューに入れています。ジョブをデバッグしたいのですが、プログラムしたメッセージを表示するには、ログファイルを確認する必要があります。 Railsコンソールでジョブ内のputsメッセージを表示できる方が便利だと思います。perform_laterメソッドを実行すると、 Rails consoleはジョブをキューに入れるだけで、コンソールにメッセージが表示されることはありません。コンソールに表示される場所にメッセージを表示する方法はありますか?

10
daveomcd

perform_nowでジョブを実行できます。

例えば...

class Foo < ActiveJob::Base
  def perform(arg1)
    puts "Hello #{arg1}"
  end
end

Foo.perform_now('world')
20
Rob Di Marco

キューアダプタを一時的にインラインに設定できます。

現在、application.rbのコードは次のようになります。

Rails.application.config.active_job.queue_adapter = :sidekiq

行をコメントアウトするだけです

# Rails.application.config.active_job.queue_adapter = :sidekiq

これにより、ジョブがインラインで実行され、コンソールに結果が表示されます。

3
Amar H-V

Development.rbに追加できる構成行があります

require 'sidekiq/testing/inline'

これにより、開発用のインラインテストが可能になります。

0
Lomefin