2016-04-14 11 views
0

私はRailsアプリケーションでActiveJobを使用していて、私のすべてのジョブで共有されるべき一般的な機能を追加しようとしています(正確には例外処理が必要です)。同等のApplicationControllerはありますか?

例は、 -

class MyAbstractJob < ActiveJob::Base 
    rescue_from StandardError do |exception| 
    # do exception handling stuff ... 
    end 
end 

class FooJob < MyAbstractJob 
    queue_as :my_queue 

    def perform *args 
    # do job stuff ... 
    end  
end 

このパターンはActionController::Baseから継承し、任意のコントローラサブクラスに使用可能な共有機能を実装するためにどこかに提供するコントローラのApplicationControllerの使用に類似しています。私が見て終わる、その場合には - -

これは実際に私がqueue_as :my_queueを呼び出すようにしようとする場合を除き、ほとんどの部分のために働くようだ

NoMethodError: undefined method 'queue_as' for #<Class:0x007f088905c970>

私はこれにRailsのドキュメント内の参照が表示されません特定のパターン。誰もがこれに対して良いアプローチを知っていますか?

答えて

0

これは奇妙なことですが、あなたのコードは正しいと思います。

FooJob.perform_later 
# Performing FooJob from Inline(my_queue) 
# Performed FooJob from Inline(my_queue) in 3.81ms 
# Enqueued FooJob (Job ID: 6fd5ea5c-06bb-46d8-943c-8cc6f1e6ac33) to Inline(my_queue) 
# => #<FooJob:0x0000000464de90 @arguments=[], @job_id="6fd5ea5c-06bb-46d8-943c-8cc6f1e6ac33", @queue_name="my_queue"> 

私はapp/jobsディレクトリに両方のクラスを入れている:私はそのまま、何も変更せず、何の問題が表示されないあなたのコードをテストしています。

あなたの質問に表示されたエラーは、継承に関連しているようです。あなたのFooJobクラスが本当にMyAbstractJobから継承されていますか?たぶん、Railsを再ロードして確実にする必要があるかもしれません。

問題が解決しない場合は、簡単な例ではなく、実際のクラスコードを投稿してください。

+0

ありがとうございます!それは事実、それは実際に正常に動作します。バグはどこかにあった。 – metahamza

関連する問題