在Sidekiq Worker中使用控制器关注

时间:2015-06-01 13:18:58

标签: ruby-on-rails-4 sidekiq activesupport-concern

我有一个像这样的Sidekiq工人:

class PrintWorker
  include Sidekiq::Worker

  def perform(action,data)
    parsed_data = JSON.parse(data)
    if action=="tiquet"
      print_tiquet(parsed_data)
    elsif action=="summary"
      print_summary(data[0],data[1])
    end
  end
end

是“print_tiquet”,“print_summary”是名为Printable的控制器关注内的方法。

有没有办法在工人阶级中包含这个问题?其实我没试过就试过了:

要求“可打印” 包括可打印

提前感谢。

2 个答案:

答案 0 :(得分:3)

你没有提到你的目录结构,但我猜:

  • 控制器
    • 关注
      • printable.rb
    • print_worker.rb

然后你需要做

require 'concerns/printable'

请注意,缺少其他路径,例如“控制器” - Rails实际上并不关心[thing]结构中的app/[thing]/关注点。它可能位于models/concernscontrollers/concerns - 无论哪种方式,require 'concerns/my_concern'它都可以正常工作。

您应该阅读this info here on how Rails (v3) loads paths

注意:在Rails 4中测试

答案 1 :(得分:0)

在Rails 5.2应用程序中,require 'concerns/printable'对我不起作用,但是include Printable对我有用。例如

class PrintWorker
  include Sidekiq::Worker
  include Printable

  ...
end