2

我有前任的工作课程

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

我正在尝试安排工作从现在开始执行 1 小时

TempJob.perform_at(1.hour.from_now)

但它给了我以下错误

NoMethodError: undefined method `perform_at' for TempJob:Class

使用 Rails 4.2.0、Ruby 2.2.0 和 Sidekiq 3.4.2。

4

1 回答 1

11

perform_at是 Sidekiq 提供的方法名,不是 ActiveJob。如果要使用 ActiveJob 安排作业在相对时间运行,则应使用ActiveJob 的 set方法,如下所示:

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

另请查看ActiveJob 基础指南

于 2015-08-14T17:53:08.663 回答