Pregunta

Tengo esta clase, que la respuesta a realizar para ser dirigido por "Resque", tengo un error en esta línea recipient.response = response.body cual es undefined method response=' for #<Hash:0x00000003969da0> creo que debido a que el trabajador y ActiveRecord no pueden trabajar juntos. P.S Ya he cargado mi entorno y esta clase se coloca en el directorio lib

Uso: 1.9.2 rubí carriles 3 Resque 1.10.0

class Msg
  def self.perform(message,sender,host, path, recipient)
    message_logger ||= Logger.new("#{Rails.root}/log/message.log")
    response = Net::HTTP.get_response(host, path)
    begin
      recipient.response = response.body
      recipient.sent_at = Time.zone.now
      recipient.save
      # Logging
      log = "Message #{
      message.sent_at}\n\tRespone:\n\t\tBody: #{response.body}\n\t\tCode: #{response.code}\n"
      message_logger.info(log)
    rescue Exception => e
      message_logger.error(e.message + '/n' + e.backtrace.inspect)
    end
  end
end
¿Fue útil?

Solución

Resque utiliza la serialización JSON. Serialización JSON no le permitiría deserializar un objeto con el método intacta.

Si tiene una instancia del destinatario (llamado "receptor") y desea utilizar en el método para llevar a cabo / persistir una respuesta, entonces debería poner en cola el identificador del receptor y la tomase de su capa de persistencia cuando se realizan es llamada .

https://github.com/defunkt/resque (checkout la sección sobre Persistencia)

Resque es diferente de DelayedJob / job de fondo y otra de esta manera. (Por eso me gusta. La misma cola puede ser compartida por múltiples implementaciones rubí, jruby, resonancia magnética, ...)

Otros consejos

Eso no suena como un problema con resque y activerecord en absoluto. Se dice que el recipient parámetro que pasó fue un hash. ¿Dónde está el código que pone en cola el trabajo? También puede echar un vistazo a la salida del registro del trabajador donde viste ese mensaje de error para ver lo que los parámetros pasados ??en el trabajo eran.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top