Question

J'ai cette classe, qui réponse à effectuer à exécuter par « Resque », j'ai une erreur à ce recipient.response = response.body ligne Wich est undefined method response=' for #<Hash:0x00000003969da0> Je pense que parce que le travailleur et ActiveRecord ne peuvent pas travailler ensemble. P.S je l'ai déjà chargé mon environnement et cette classe placé dans le répertoire lib

Utilisation: 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
Était-ce utile?

La solution

Resque utilise sérialisation JSON. sérialisation JSON ne vous permettra de désérialiser un objet avec la méthode intacte.

Si vous avez une instance de destinataire (appelé « bénéficiaire ») et que vous voulez l'utiliser dans la méthode pour effectuer / persisteront une réponse, alors vous devriez enqueue l'identifiant du destinataire et chercher dans votre couche de persistance lorsque Perform est appelé .

https://github.com/defunkt/resque (caisse de la section sur la persistance)

Resque est différent de DelayedJob / arrière-plan d'emploi et d'autres de cette façon. (Ce qui est la raison pour laquelle je l'aime. Peut partager la même file d'attente par de multiples implémentations de Ruby, JRuby, mri, ...)

Autres conseils

Cela ne ressemble pas à un problème avec resque et activerecord du tout. Il dit que le paramètre recipient que vous avez passé dans était un hachage. Où est le code qui le travail en file d'attente? Vous pouvez également jeter un oeil une sortie de journal du travailleur où vous avez vu ce message d'erreur pour voir ce que les paramètres passés dans le travail étaient.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top