2010-10-25 16 views
6

No tengo idea de lo que he hecho aquí, pero he intentado obtener un controlador en Rails para poner en cola un trabajo en Resque, que luego un trabajador se conecta y hace el trabajo pesado (comparaciones de IE, entradas de bases de datos).
Sin embargo, las tareas ni siquiera se están ejecutando, ya que no hay instrucciones claras para configurar Resque up.Resque worker da "NoMethodError: método indefinido` perform` "

Copiar y pegar de a continuación:
Also available in Gist format!

Esta es la línea excepción de hoptoad:

NoMethodError: undefined method 'perform' for Violateq:Module 

Este es el contenido del archivo de "trabajador":

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 

Este es el contenido del archivo "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 

Muchas gracias por su tiempo, y si desea más información, por favor no dude en ponerse en contacto conmigo,
Lucas carpintero

Respuesta

16

fijo.
Cambiado def perform-def self.perform
Entonces funcionó

Gracias,
Lucas carpintero

+0

Gracias amigo. Esto me ahorra un gran momento. Estaba leyendo este http://blog.redistogo.com/2010/07/26/resque-with-redis-to-go/ y su código es incorrecto (¿tal vez solo de una versión anterior?) Y con esto funciona. – rafamvc

+0

Esto me salvó a mí también, y en realidad estaba leyendo la misma publicación a la que se vincula el sujeto de arriba. –

Cuestiones relacionadas