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

18

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


我刚刚打开了第二个控制台并跟踪了日志...很想知道是否有更好的答案! - Mitch VanDuyn
4个回答

34

您可以使用perform_now来运行作业。

例如...

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

Foo.perform_now('world')

10
你可以暂时将队列适配器设置为内联。
现在,你在application.rb中的代码大致如下:
Rails.application.config.active_job.queue_adapter = :sidekiq

只需将该行注释掉即可

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

这将在内联方式下运行您的作业,并且您应该可以在控制台中看到结果。


9

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


0

你可以在 development.rb 中添加配置行。

require 'sidekiq/testing/inline'

这应该可以实现开发中的内联测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接