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

时间:2015-12-29 21:32:26

标签: ruby-on-rails sidekiq rails-console rails-activejob

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

4 个答案:

答案 0 :(得分:14)

您可以使用perform_now运行作业。

例如......

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

Foo.perform_now('world')

答案 1 :(得分:3)

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

现在,application.rb中的代码看起来像这样:

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

只需注释掉

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

Error: `false` has type 'character' not 'integer'

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