2015-08-14 4 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 

Я пытаюсь планировать работу, чтобы быть выполнить 1hours из ныне

TempJob.perform_at(1.hour.from_now) 

но это дает мне следующее сообщение об ошибке

NoMethodError: undefined method `perform_at' for TempJob:Class 

Использование Rails 4.2.0, Ruby 2.2.0 и 3.4.2 Sidekiq.

+0

Пожалуйста, не добавляйте свои настройки в верхней части вопроса, я уже перенес их в нижнюю часть. –

ответ

5

perform_at - это имя метода, предоставленного Sidekiq, а не ActiveJob. Если вы хотите, чтобы запланировать задание для запуска при относительном времени с помощью ActiveJob, вы должны использовать метод ActiveJob's set так:

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

Также обратите внимание на ActiveJob basics guide.

+0

Спасибо Тамер, это работает, я пропустил это руководство. – KrunaL