2015-08-14 37 views
0

我有恩Sidekiq 3.4.2和Rails 4.2.0具有錯誤「未定義的方法perform_at」

class TempJob < ActiveJob::Base 
    queue_as :default # To Do Design Queue 

    around_perform do |job, block| 
     puts "Before Perform' 

     block.call 

     puts "After Perform" 
    end 

    def perform(*args) 
     puts "Job Start" 
    end 
end 

我試圖安排工作,從現在開始

TempJob.perform_at(1.hour.from_now) 
執行1小時工作類

但它給我下面的錯誤

NoMethodError: undefined method `perform_at' for TempJob:Class 

使用Rails 4.2.0,2.2.0紅寶石和Sidekiq 3.4.2。

+0

請不要在問題頂部添加您的設置細節,我已經將它們移動到了底部。 –

回答

5

perform_at是由Sidekiq提供的方法的名稱,而不是ActiveJob。如果你想安排一個作業中使用ActiveJob在一個相對時間運行,您應該使用ActiveJob's set方法是這樣的:

TempJob.set(wait: 1.hour).perform_later 

而且看一看的ActiveJob basics guide

+0

謝謝Tamer,它的工作原理我錯過了這個指導原則。 – KrunaL

相關問題