【问题标题】:How can I run an ActiveJob in Rails console for debugging?如何在 Rails 控制台中运行 ActiveJob 进行调试?
【发布时间】:2016-04-03 19:56:59
【问题描述】:

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

【问题讨论】:

  • 我只是打开第二个控制台并跟踪日志...有兴趣看看是否有更好的答案!

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


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    在development.rb中有一个配置行可以添加

    require 'sidekiq/testing/inline'
    

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

    【讨论】:

      【解决方案3】:

      您可以使用perform_now 运行作业。

      例如...

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

      【讨论】:

        【解决方案4】:

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

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

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

        注释掉一行

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2022-07-19
          • 2013-04-19
          • 2015-03-23
          • 2014-05-08
          • 1970-01-01
          • 1970-01-01
          • 2019-12-04
          • 2011-05-24
          相关资源
          最近更新 更多