Domanda

Non ho questa classe che risposta da eseguire per essere gestito da "Resque", ho un errore in questa linea recipient.response = response.body wich è undefined method response=' for #<Hash:0x00000003969da0> Penso che perché il lavoratore e ActiveRecord non possono lavorare insieme. P.S Ho già caricato il mio ambiente e questa classe collocato nella directory lib

Utilizzo: ruby 1.9.2 Rails 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
È stato utile?

Soluzione

Resque utilizza serializzazione JSON. JSON serializzazione non avrebbe permesso di deserializzare un oggetto con il metodo intatta.

Se si dispone di un'istanza di destinatario (denominato "destinatario") e vuole usarlo nel metodo per eseguire / persistere una risposta allora si dovrebbe accodare l'id del destinatario e prenderlo dal vostro livello di persistenza quando eseguire è chiamato .

https://github.com/defunkt/resque (checkout la sezione sulla persistenza)

Resque è diverso da DelayedJob / Background di lavoro e l'altro in questo modo. (Ed è per questo che mi piace. La stessa coda può essere condiviso da più implementazioni rubino, JRuby, risonanza magnetica, ...)

Altri suggerimenti

Che non suona come un problema con resque e ActiveRecord a tutti. Si dice che il parametro recipient che avete passato era un hash. Dove è il codice che accodato il lavoro? Si può anche dare un'occhiata a l'output del registro da parte del lavoratore in cui si è visto che il messaggio di errore per vedere quali sono i parametri passati nel lavoro erano.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top