如何将ApplicationController中的帮助器包含到Sidekiq工作器中?

时间:2016-04-29 23:26:00

标签: ruby-on-rails ruby helper sidekiq

这是我的ApplicationController控制器:

class ApplicationController < ActionController::Base
  helper_method :is_admin?

  def is_admin?
    ...
  end
end

我正在尝试在Sidekiq工作者中使用此助手is_admin?。到目前为止,我在那里包括这个:

class GenerateInvoiceWorker
  include Sidekiq::Worker

  def perform(product_id)
    av = ActionView::Base.new()
    av.view_paths = ActionController::Base.view_paths

    av.class_eval do
      include Rails.application.routes.url_helpers
      include ApplicationHelper
    end

    ...
  end
end

如何在工作者中使用辅助方法?

由于

2 个答案:

答案 0 :(得分:5)

你是在想它:

class GenerateInvoiceWorker
  include Sidekiq::Worker
  include MyHelper

  def perform(product_id)
  end
end

答案 1 :(得分:3)

is_admin?提取到ApplicationHelper或任何其他模块中。记住帮助者只不过是ruby模块。然后在ApplicationHelperApplicationController中包含该模块(无论是GenerateInvoiceWorker还是任何其他自定义帮助程序。

class ApplicationController < ActionController::Base
  include ApplicationHelper

end

class GenerateInvoiceWorker
  include Sidekiq::Worker
  include ApplicationHelper

  def perform(product_id)
  end
end