0

我正在尝试使用 Heroku 计划任务,该任务对特定控制器的操作进行 HTTP GET。这是任务的样子:

require 'net/http'

desc "This task is called by the Heroku scheduler add-on"
task :send_notifications => :environment do
    Net::HTTP.get("http://testapp.com", "/test/send_notifications")
end

运行时:

heroku rake send_notifications

我收到以下错误:

rake aborted!
getaddrinfo: Name or service not known
/app/lib/tasks/scheduler.rake:5:in `block in <top (required)>'

有什么想法吗?

提前致谢

4

2 回答 2

1

一个干净的解决方案可能是将请求逻辑放在您在 Rails 应用程序目录中的任何位置创建的特殊类的类方法中。

# app/workers/request_worker.rb
class RequestWorker
  # Request X from Y
  def self.retrieve_testapp
    # Do anything nescessary to build and execute the request in here
  end
end

然后,您可以通过 Rails 运行器使用 Heroku Scheduler 插件安排请求(让您在 Rails 应用程序的上下文中执行任何命令。)

rails runner RequestWorker.retrieve_testapp

要真正从 Ruby/Rails 执行 HTTP 请求,有很多有用的 gem。不错的是ExconHTTP Client

于 2012-11-16T19:00:48.477 回答
0

我决定使用已经处理好的“HTTParty”库:

response = HTTParty.get('http://testapp.com/test/send_notifications')
于 2012-11-16T16:32:32.710 回答