Использование HTTParty с delayed_job - PullRequest
1 голос
/ 13 декабря 2011

Я пытаюсь сделать это с 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 хорошо играли вместе?

1 Ответ

1 голос
/ 13 декабря 2011

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

Пример:

# 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

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

some_results = some_user.start_the_party

Edit

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

Пример:

# 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 (т.е. текущего объекта пользователя).

...