1

我正在尝试使用delayed_joband来做到这一点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

或者如果您需要访问成功的获取请求内容

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(即当前用户对象)上调用。

于 2011-12-12T21:25:35.893 回答