【问题标题】:Use controller Concern inside Sidekiq Worker在 Sidekiq Worker 中使用控制器关注点
【发布时间】:2020-05-13 00:12:34
【问题描述】:

我有一个像这样的 Sidekiq Worker:

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。

有没有办法将这种担忧包含在工人阶级中?其实我试过没有运气:

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

    • 控制器
      • 担忧
        • printable.rb
    • 工人
      • print_worker.rb

    那你就需要做

    require 'concerns/printable'
    

    请注意缺少诸如“控制器”之类的附加路径——Rails 实际上并不关心您关注的app/[thing]/ 结构中的哪个[thing]。它可以在 models/concernscontrollers/concerns 中 - 无论哪种方式,require 'concerns/my_concern' 都可以正常工作。

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

    注意:在 Rails 4 中测试

    【讨论】:

      【解决方案2】:

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

      class PrintWorker
        include Sidekiq::Worker
        include Printable
      
        ...
      end
      

      【讨论】:

        猜你喜欢
        • 2014-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多