2012-03-09 21 views
1

私は定期的な間隔でレークタスクをエンキューする必要がある、Redis/ResqueでHeroku上で実行されているRuby on Railsアプリケーション(1.9.2および3.2)を使用しています。今は私のローカルマシンから「heroku run rake update_listings」を1日に1回または2回実行しています....私はこれを自動化したいと思います。私はいつもの宝石を試しましたが、仕事はバックグラウンドで始まらないでしょう。 Herokuスケジューラーは適切なソリューションのようですが、私はscheduler.rbファイルに混乱しています。私が持っている:私は走ったときHerokuスケジューラResque

desc "This task is called by the Heroku scheduler add-on" 
task :hourly_feed => :environment do 
    Rake::Task[update_listings].execute 
end 

:Herokuのスケジューラコンソールからhourly_feedタスクをし、Herokuのログをチェックし、私はいくつかのウェブdynosがhirefireappによってスピンアップ、しかしupdate_listingsは、タスクが呼び出されることはなかった熊手ます見ました。

更新:私はresque_schedulerをあきらめました。私はこの仕事をするには緑すぎるので、crontabとsriptファイルを使用しようとしています。ここに私のupdate.shスクリプトファイルは次のとおりです。

Rake::Task["update_listings"].execute 

私はcrontabのメールを使用しての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

答えて

0

Heroku Schedulerは完璧に機能していることが判明しました。私は単に「更新リスト」の引用符を忘れてしまいました。

0

は個人的に、私はcronのを使用してresque/Redisのキューにジョブを追加しますた、resque_schedulerを使用戻ってきました。

resque_schedule.yml

count_delayed_jobs_job: 
cron: "0 */1 * * *" 
class: Support::CountDelayedJobsResque 
queue: CDJ 
args: 
description: "count_delayed_jobs_job, every 1hr" 

代わりに、あなただけのシェルスクリプトでRake::Task["update_listings"].executeをチャックし、ジョブを起動するためにcrontabファイルを使用することができます。

+0

ありがとう、私はcrontabソリューションを試してみたいくつかの問題で私の質問を更新しました。 – tbone

+0

あなたのprocifleセットアップはこれをどうやって行うのですか?@TomDunning http://stackoverflow.com/questions/41537142/heroku-procfile-resque-puma-rails-5-resque-scheduler-setup –

+0

@chrishough、何をするには?スケジューラを実行しますか?これはresque_scheduler gemの一部です – TomDunning

関連する問題