1

私はこれをやろうとしてい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 をうまく連携させるにはどうすればよいでしょうか?

4

1 に答える 1

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

または、成功した get リクエストのコンテンツにアクセスする必要がある場合

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

または、成功した get リクエストのコンテンツにアクセスする必要がある場合

some_results = User.start_the_party

違いはUser.some_method_name、モデルで呼び出されるのUserに対し、モデルsome_user.some_method_nameのインスタンスUser(つまり、現在のユーザー オブジェクト) で呼び出されることです。

于 2011-12-12T21:25:35.893 に答える