Sidekiq 3.4.2 和 Rails 4.2.0 出现“未定义方法 perform_at”错误
Posted
技术标签:
【中文标题】Sidekiq 3.4.2 和 Rails 4.2.0 出现“未定义方法 perform_at”错误【英文标题】:Sidekiq 3.4.2 and Rails 4.2.0 having error with 'undefined method perform_at' 【发布时间】:2015-11-08 01:02:09 【问题描述】:我有前任的工作课程
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。
【问题讨论】:
请不要在问题顶部添加您的设置详细信息,我已经将它们移到了底部。 【参考方案1】:perform_at
是Sidekiq提供的方法名,不是ActiveJob。如果您想使用 ActiveJob 安排作业在相对时间运行,则应使用 ActiveJob's set 方法,如下所示:
TempJob.set(wait: 1.hour).perform_later
还可以查看ActiveJob basics guide。
【讨论】:
以上是关于Sidekiq 3.4.2 和 Rails 4.2.0 出现“未定义方法 perform_at”错误的主要内容,如果未能解决你的问题,请参考以下文章
Rails 4.2 - Sidekiq 在开发中不发送电子邮件
Sidekiq Rails 4.2 使用 Active Job 还是 Worker?有啥不同