Использование HTTParty с delayed_job

Я пытаюсь сделать это с помощью delayed_job и HTTParty:

HTTParty.delay.get('http://example.com')

Он успешно сохраняется в таблице DJ следующим образом:

--- !ruby/object:Delayed::PerformableMethod
object: !ruby/object:Module {}
method_name: :get
args:
- http://example.com

Проблема в том, что в этом обработчике нет упоминания о HTTParty, поэтому, когда я пытаюсь запустить задания, я получаю эту ошибку:

undefined method `get' for #<Module:0x007fff1095b9a8>

Я использую delayed_job (3.0.0.pre), delayed_job_active_record (0.2.1) и httparty (0.7.7) в приложении rails 3.0.6.

Итак, как я могу сделать так, чтобы delayed_job и HTTParty хорошо сочетались друг с другом?


person Shpigford    schedule 12.12.2011    source источник


Ответы (1)


Оберните код в метод экземпляра.

Пример:

# User.rb model
include HTTParty

# Get a URL
def start_the_party(url)
  HTTParty.get(url)
end
handle_asynchronously :start_the_party

Затем вы просто называете это в другом месте, например:

some_user.start_the_party

или если вам нужен доступ к успешному содержимому запроса на получение

some_results = some_user.start_the_party

Изменить

Если вы собираетесь сделать это методом класса, то код будет таким:

Пример:

# User.rb model
include HTTParty

# Get a URL
class << self
  def start_the_party(url)
    HTTParty.get(url)
  end
  handle_asynchronously :start_the_party
end

Затем вы просто называете это в другом месте, например:

User.start_the_party

или если вам нужен доступ к успешному содержимому запроса на получение

some_results = User.start_the_party

Разница в том, что User.some_method_name вызывается для модели User, тогда как some_user.some_method_name вызывается для экземпляра модели User (т. е. текущего пользовательского объекта).

person iwasrobbed    schedule 12.12.2011
comment
Теперь я получаю undefined method 'start_the_party' for Class:Class - person Shpigford; 13.12.2011
comment
Вы называете это как User.start_the_party или some_user_here.start_the_party? Пожалуйста, обновите свой исходный пост соответствующим кодом. - person iwasrobbed; 13.12.2011