Redis/Resque を使用して Heroku で実行されている ruby on rails アプリ (1.9.2 および 3.2) を使用しており、rake タスクを定期的にキューに入れる必要があります。現在、ローカル マシンから 'heroku run rake update_listings' を 1 日に 1 回か 2 回実行しています。これを自動化したいと考えています。いつでも宝石を試しましたが、タスクはバックグラウンドで起動しません。Heroku スケジューラは適切な解決策のように思えますが、scheduler.rb ファイルに戸惑っています。私は持っている:
desc "This task is called by the Heroku scheduler add-on"
task :hourly_feed => :environment do
Rake::Task[update_listings].execute
end
Heroku Scheduler コンソールから :hourly_feed タスクを実行し、heroku ログを確認したところ、hirefireapp によって複数の Web dyno がスピンアップされていることがわかりましたが、update_listings rake タスクは呼び出されませんでした。
更新: resque_scheduler をあきらめました。私はこれを機能させるには環境が良すぎるので、crontab と sript ファイルを使用しようとしています。私のupdate.shスクリプトファイルは次のとおりです。
Rake::Task["update_listings"].execute
crontab-e を使用して cron を設定し、5 分ごとに実行しましたが、メール ログにエラーが記録されます。
Projects/livebytransit/update.sh: line 1: Rake::Task[update_listings].execute: command not found
私の update.sh スクリプト ファイルを見つけて読み取っているように見えますが、コードを実行していません。ログ エントリで引用符が削除されていることに気付いたので、シェル スクリプト ファイルでも単一引用符を使用してみましたが、変更はありませんでした。また、update.sh を次のように変更してみました。
heroku run rake update_listings
エラーが返ってきましたheroku: command not found