我有一个 ruby on rails 应用程序(1.9.2 和 3.2)在 Heroku 上使用 Redis/Resque 运行,需要定期将 rake 任务排入队列。现在我每天从我的本地机器上运行一次或两次“heroku run rake update_listings”......我想自动化这个。我已经尝试过无论何时 gem,但该任务不会在后台启动。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 日志时,我看到几个 web dynos 被hirfireapp 启动,但 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 脚本文件并读取它,但它没有执行代码。我注意到日志条目删除了引号,所以我也尝试在 shell 脚本文件中使用单引号,没有变化。我还尝试将 update.sh 更改为:
heroku run rake update_listings
错误又回来了heroku: command not found