1. ホーム
  2. ruby-on-rails

[解決済み】railsのcronジョブ:ベストプラクティス?

2022-04-14 02:27:27

質問

Rails環境でスケジュールされたタスクを実行するのに最適な方法は何でしょうか?スクリプト/ランナー?Rake?数分おきにタスクを実行したいです。

解決方法は?

私は、rakeのアプローチ(as supported by ヒーロク )

lib/tasks/cron.rakeというファイルを使って・・・。

task :cron => :environment do
  puts "Pulling new requests..."
  EdiListener.process_new_messages
  puts "done."
end

コマンドラインから実行する場合、これは単に "rake cron" となります。このコマンドは、OSのcron/タスクスケジューラーに好きなように置くことができます。

アップデート これはかなり古い質問と回答です いくつか新しい情報があります。

  • 私が参照した heroku cron サービスは、その後、次のものに置き換えられました。 Heroku スケジューラ
  • 頻繁に発生するタスク(特にRails環境の起動コストを避けたい場合)には、システムクーロンを使ってスクリプトを呼び出し、(a) 安全でプライベートなWebhook APIを呼び出してバックグラウンドで必要なタスクを起動するか、または (b) 選択したキューイングシステムでタスクを直接キューに入れる方法が好ましいです。