2016-04-29 16 views
0

これは私のApplicationControllerコントローラです。これまでのところ、私はこのそこに含めています:ApplicationControllerのヘルパーをSidekiqワーカーに含めるにはどうすればいいですか?私はSidekiq労働者にこのヘルパー<code>is_admin?</code>を使用しようとしています</p> <pre><code>class ApplicationController < ActionController::Base helper_method :is_admin? def is_admin? ... end end </code></pre> <p>:

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 

労働者にヘルパーメソッドを利用できるようにする方法は?

おかげ

答えて

5

あなたはWAY以上、それを考えている:

class GenerateInvoiceWorker 
    include Sidekiq::Worker 
    include MyHelper 

    def perform(product_id) 
    end 
end 
3

ApplicationHelperまたは任意の他のモジュールにis_admin?を抽出します。助手はルビーモジュールだけであることを忘れないでください。そして、それApplicationHelperまたはその他のカスタムヘルパー、ApplicationController中とGenerateInvoiceWorkerの両方であること(そのモジュールが含まれる。

class ApplicationController < ActionController::Base 
    include ApplicationHelper 

end 

class GenerateInvoiceWorker 
    include Sidekiq::Worker 
    include ApplicationHelper 

    def perform(product_id) 
    end 
end 
+0

答え、Drahamをありがとう。しかし、 'is_adminは?'、 'ApplicationHelper'ファイルではありませんが、メソッドとしての 'ApplicationController'ファイルの中にあります。 – user984621

+0

メソッド' is_admin? 'を' application_controller.rb'から 'application_helper.rb'に移動するだけです。 – Dharam