0

特定のコントローラーのアクションに対して HTTP GET を行う Heroku スケジュール タスクを使用しようとしています。タスクは次のようになります。

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 スケジューラ アドオンを使用してリクエストをスケジュールできます (これにより、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 に答える