2

我在尝试使用 ResqueScheduler enqueue_at 时不断收到此错误

QuestionsController#create 中的 Resque::NoQueueError
作业必须放在队列中。

这是调用它的类:注意 after_create 回调。

在 Questions 控制器中引发错误的原因是因为有一个回调 on_create Question反过来,它会Assignment为用户创建一个。

这是这篇文章的后续问题:

resque 调度程序作业的奇怪行为

我尝试按照此视频中给出的示例进行操作: http ://railscasts.com/episodes/271-resque?view=comments

. . .以及阅读我在 Resque 调度程序上可以在线找到的所有内容(包括他们的文档:https ://github.com/bvandenbos/resque-scheduler )

我有理由相信我做对了,此时我很沮丧。这似乎是一个非常罕见的在线错误,几乎没有文档。

    需要“scheduler_job”
    类分配 ActiveRecord::Base
      属于_to:用户
      属于_to:问题
      attr_accessible :title, :body, :user_id, :question_id , :response , :correct
      after_create :queue_assignments
      before_destroy :remove_from_queue


      默认等级
        self.correct = (response == self.question.solution) 除非 response == nil
      结尾

      def queue_assignments
        Resque.enqueue_at(self.question.schedule , SchedulerJob , :id => self.id)
      结尾
      def remove_from_queue
        Resque.remove_delayed(SchedulerJob, :id => self.id)
      结尾
      def sendAlertEmail
        QuestionMailer.question(self)
      结尾
      def as_json(options={})
        {
          :正确 => 正确,
          :created_at => created_at,
          :id => id,
          :question_id => question_id,
          :响应=>响应,
          :updated_at => updated_at,
          :user_id => user_id,
          :question => self.question
        }
      结尾
    结尾

这是工作:

    需要“分配”
    需要“问题邮件”
    # 当我把它改成一个类时这也不起作用
    模块调度器作业


      #this 也不适用于 :ready_queue 但我不知道有什么区别
      @ready_queue = "ready_queue"
      def self.perform(id)
        @assignment=assignment.find_by_id(id)
        @assignment.sendAlertEmail
      结尾


    结尾

4

1 回答 1

4

好的,经过大量的故障排除并将我的头撞到墙上,我终于让它工作了。

实例变量必须命名为@queue。问题是我正在命名它@ready_queue。我猜resque调度程序需要这个。反正。它现在似乎正在工作。到下一个错误。

于 2013-04-07T02:31:14.793 回答