如何在 Rails 控制台中 运行 ActiveJob 进行调试?

How can I run an ActiveJob in Rails console for debugging?

我目前有一个已创建的 ActiveJob,并使用 Sidekiq 对其进行排队。我想调试该作业,但要查看我编入其中的任何消息,我必须检查我的日志文件。我觉得如果能够在 Rails 控制台中查看我的 puts 消息会更方便。当我 运行 perform_later 方法虽然在 rails 控制台中时,它只是将作业排队,而我从未在控制台中看到消息。有没有办法让我在控制台中看到它们?

您可以暂时将队列适配器设置为内联。

现在您在 application.rb 中的代码将如下所示:

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

只需注释掉该行

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

这将 运行 您的作业内联,您应该会在控制台中看到结果。

您可以 运行 一份 perform_now 的工作。

例如...

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

Foo.perform_now('world')

在development.rb

中可以添加配置行
require 'sidekiq/testing/inline'

这应该可以为开发启用内联测试。

您可以运行使用新的,例如Foo.new.perform(ar_1, ar_2)