我不知道我在这里做了什么,但我试图让Rails中的一个控制器将一个作业排队到Resque上,然后一个worker连接到Resque并执行繁重的任务(即比较、数据库条目)。
然而,这些任务甚至没有运行,因为没有明确的指令来设置Resque。
复制并粘贴如下内容:
Also available in Gist format!
这是来自Hoptoad的例外行:
NoMethodError: undefined method 'perform' for Violateq:Module这是"worker“文件的内容:
module Violateq
@queue = :violateq
def perform(nick, rulenumber)
# Working for the weekend!!!
puts "I got a nick of #{nick} and they broke #{rulenumber}"
@violation = Violation.new(nick, rulenumber)
puts "If you got this far, your OK"
log_in(:worker_log, {:action => "Violate d=perfom", :nick => nick, :rulenumber => rulenumber, :status => "success"})
#rescue => ex
# notify_hoptoad(ex)
# log_in(:worker_log, {:action => "Violate d=perfom", :nick => nick, :rulenumber => rulenumber, :status => "failure"})
end
end这是"web_controller“文件的内容:
class IncomingController < ApplicationController
require 'mail'
skip_before_filter :verify_authenticity_token
def create
message = Mail.new(params[:message])
# Push the message into the queue
Resque.enqueue(Violateq, message.from.to_s, message.subject.to_s)
log_in(:endpoint_log, {:action => "IncomingController d=create", :subject => message.subject, :message => message.body.decoded})
render :text => 'success', :status => 200 # a status of 404 would reject the mail
rescue => ex
notify_hoptoad(ex)
render :text => 'failure', :status => 500
end
end非常感谢您的时间,如果您想要更多的信息,请不要犹豫与我联系,
卢克·卡彭特
发布于 2010-10-27 18:16:00
已修复。
将def perform更改为def self.perform
然后它就起作用了
谢谢,
卢克·卡彭特
https://stackoverflow.com/questions/4018276
复制相似问题