尝试使用ResqueScheduler enqueue_at时,我一直收到此错误
Resque::NoQueueError in QuestionsController#create
Jobs must be placed onto a queue.
这是调用它的类:注意after_create回调 .
在Questions控制器中引发错误的原因是因为 Question
有一个回调 on_create
,这反过来为用户创建了 Assignment
.
这是此帖的后续问题:
Strange behavior with a resque scheduler job
我试图在这个视频中关注givien的例子:http://railscasts.com/episodes/271-resque?view=comments
. . . 以及阅读基本上我在Resque调度程序上可以找到的所有内容,(包括他们的文档:https://github.com/bvandenbos/resque-scheduler)
我有理由相信我这样做是对的,非常沮丧 . 这似乎是一个非常罕见的错误在线,几乎没有文档 .
require "scheduler_job"
class Assignment ActiveRecord::Base
belongs_to :user
belongs_to :question
attr_accessible :title, :body, :user_id, :question_id , :response , :correct
after_create :queue_assignments
before_destroy :remove_from_queue
def grade
self.correct = (response == self.question.solution) unless response == nil
end
def queue_assignments
Resque.enqueue_at(self.question.schedule , SchedulerJob , :id => self.id)
end
def remove_from_queue
Resque.remove_delayed(SchedulerJob, :id => self.id)
end
def sendAlertEmail
QuestionMailer.question(self)
end
def as_json(options={})
{
:correct => correct,
:created_at => created_at,
:id => id,
:question_id => question_id,
:response => response ,
:updated_at => updated_at,
:user_id => user_id,
:question => self.question
}
end
end
这是工作:
require 'Assignment'
require 'QuestionMailer'
# this didnt work when i changed it to a class either
module SchedulerJob
#this didnt work with :ready_queue either but I dont know what the difference is
@ready_queue = "ready_queue"
def self.perform(id)
@assignment=Assignment.find_by_id(id)
@assignment.sendAlertEmail
end
end
1 回答
好吧经过大量的故障排除并将我的头撞在墙上后,我终于开始工作了 .
实例变量必须命名为
@queue
. 问题是我在命名它@ready_queue
. 我想resque调度程序需要这个 . 无论如何 . 它似乎现在正在运作 . 到下一个bug .