如何在 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)
我目前有一个已创建的 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)