【发布时间】:2011-06-21 00:52:56
【问题描述】:
我在我的 Rakefile 的 cron 任务中排队工作,例如:
Delayed::Job.enqueue(MyJob.new(variable))
我在 /lib 中有一个类如下:
class MyJob < Struct.new(:variable)
def perform
Watchdog.create(:module => 'MyJob', :messagetype => 'Notice', :message => "Variable is #{variable}")
end
end
我有一个看门狗类,如下:
class Watchdog < ActiveRecord::Base
attr_accessible :id,
:module,
:message_type,
:message,
:created_at,
:updated_at
end
我已经将它部署到 Heroku。在我运行 heroku rake cron 后,我看到一个作业被放置在我的 Delayed_jobs 表中(例如,它已入队),并且我看到在我添加一个工作人员后,它已从队列中删除。然而,对 Watchdog.all 的调用会返回一个空集。
因此,作业似乎已入队和出队,但未执行我的 MyJob 对象的 perform 方法。
我在 Heroku 上运行 Rails 3 和 Ruby 1.8.7。
有谁知道为什么我的 perform 方法没有被调用?非常感谢您的帮助。我对 Rails 比较陌生。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 heroku delayed-job