Вопрос

У меня есть этот класс, который отвечает для выполнения «Resque», у меня есть ошибка на этой строке recipient.response = response.body который undefined method response=' for #<Hash:0x00000003969da0> Я думаю, что, потому что рабочий и ActiveRecord не могут работать вместе. PS Я уже загрузил свою среду, и этот класс помещен в каталог lib

Использование: 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
Это было полезно?

Решение

Ристе использует сериализацию JSON. JSON Serialization не позволит вам десетировать объект с помощью метода Intact.

Если у вас есть экземпляр получателя (именованный «получатель»), и хотите использовать его в способе для выполнения / сохранения ответа, то вы должны вызвать идентификатор получателя и получить его с вашего слоя настойчивости при выпуске.

https://github.com/defunkt/resque. (Оформить заказ раздел на постоянство)

Resque отличается от задержки / фона и других таким образом. (Вот почему мне это нравится. Одна той же очередь может быть разделена несколькими реализациями Ruby, Jruby, MRI, ...)

Другие советы

Это не звучит как проблема с Resque и ActiveSerecord вообще. Это говорит о параметре recipient что вы прошли, был хеш. Где код, который извлекает работу? Вы также можете взглянуть на вывод журнала с работника, в котором вы видели это сообщение об ошибке, чтобы увидеть, какие параметры, передаваемые на работу.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top