2013-04-07 1 views
2

나는이 오류가 계속 그것을 부르고 클래스가 발생합니다.레일즈 애플리케이션에서 Enqueue_at (..) 오류가 발생했습니다. after_create 콜백주의 : Resque 스케줄러는 ResqueScheduler 여기 <pre>Resque::NoQueueError in QuestionsController#create Jobs must be placed onto a queue. </pre> <p></p>을 enqueue_at 사용하는 동안 NoQueueError

질문 컨트롤러에서 오류가 발생하는 이유는 Question에 대해 on_create의 콜백이 있고 사용자에 대해 Assignment을 생성하기 때문입니다. 내가이 비디오에 givien 예제를 따라하려고했습니다

Strange behavior with a resque scheduler job

: http://railscasts.com/episodes/271-resque?view=comments

이 게시물에서 후속 문제입니다. . .res뿐만 아니라 기본적으로 Resque 스케줄러 온라인에서 찾을 수있는 모든 것을 읽는 것 (여기에 그들의 문서를 포함하여 : https://github.com/bvandenbos/resque-scheduler)

나는이 일을 올바르게하고 있으며 꽤 좌절하고 있다고 자신있게 생각한다. 이 문서는 거의 정보가없는 아주 드문 오류입니다. 나는 마지막으로 작동있어 문제 해결의 톤 후와 벽에 내 머리를 두드리는 있도록

 

    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 

답변

3

확인 : 여기

 

    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 

그리고

는 일이다.

인스턴스 변수의 이름은 @queue이어야합니다. 문제는 내가 그것을 @ready_queue이라고지었습니다. 나는 resque 스케줄러가 이것을 필요로한다고 생각한다. 어쨌든. 지금 일하고있는 것 같습니다. 다음 버그에.