首页 文章

rails app中的Enqueue_at(..)错误 . Resque调度程序引发NoQueueError

提问于
浏览
2

尝试使用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 回答

  • 3

    好吧经过大量的故障排除并将我的头撞在墙上后,我终于开始工作了 .

    实例变量必须命名为 @queue . 问题是我在命名它 @ready_queue . 我想resque调度程序需要这个 . 无论如何 . 它似乎现在正在运作 . 到下一个bug .

相关问题