这样一些背景奇怪的行为,我得到了一些意见在这里:与resque调度工作
A和已经被捆绑在今天实现它。我似乎不能让它工作。这是用来走动我的问题延迟队列和准备之间发送队列调度我的工作(因为我已经决定用电子邮件代替SMS)
require 'Assignment'
require 'QuestionMailer'
module SchedulerJob
@delayed_queue = :delayed_queue
@ready_queue
def self.perform()
@delayed_queue.each do |a|
if(Time.now >= a.question.schedule)
@ready_queue << a
@delayed_queue.delete(a)
end
end
push_questions
end
def self.gather()
assignments = Assignment.find :all
assignments.each do |a|
@delayed_queue << a unless @delayed_queue.include? a
end
end
private
def self.push_questions
@ready_queue.each do |a|
QuestionMailer.question(a)
end
end
end
我使用回调on_create到每次创建任务时都要调用收集方法,然后执行操作实际上会在运行resque时发送电子邮件。
虽然我收到了一个来自回调的奇怪错误。 undefined method `include?' for :delayed_queue:Symbol
这里是从分配模型
class Assignment < ActiveRecord::Base
belongs_to :user
belongs_to :question
attr_accessible :title, :body, :user_id, :question_id , :response , :correct
after_create :queue_assignments
def grade
self.correct = (response == self.question.solution) unless response == nil
end
def queue_assignments
SchedulerJob.gather
end
任何想法是怎么回事的代码?我认为这是一个问题,我理解这些队列如何与resque-scheduler一起工作。我认为,如果队列是类似列表的对象,那么我可以对它们进行操作,但它似乎是一个符号,而不是像methode那样的东西包含在内?我认为< <表示法增加的东西也是无效的。 也请告知,如果这是不是去处理这类作业调度
你有没有加入'gather'方法'SchedulerJob'后重新启动您的应用程序? – 2013-04-07 00:14:11
不错,所以改变了错误信息,但是现在我认为我遇到了对resque-scheduler工作原理的基本误解。更新问题主体以反映该问题 – bluedevil 2013-04-07 00:21:07
我已经在下面发布了对原始问题的解答。如果您现在遇到新问题,最好打开一个关于当前问题的新问题(即,如何正确使用resque-scheduler) – 2013-04-07 00:27:55