У меня есть приложение ruby on rails (1.9.2 и 3.2), работающее на Heroku с Redis/Resque, которое требует, чтобы задача rake ставилась в очередь через равные промежутки времени. Прямо сейчас я запускаю 'heroku run rake update_listings' с моей локальной машины один или два раза в день... Я хотел бы автоматизировать это. Я пробовал гем всякий раз, но задача не запускалась в фоновом режиме. Планировщик 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
Когда я запускал задачу :hourly_feed из консоли планировщика Heroku и проверял журналы heroku, я видел, как приложение найретефира запускало несколько веб-динамиков, но рейк-задача update_listings так и не была запущена.
Обновление: я отказался от resque_scheduler. Я слишком зеленый, чтобы сделать эту работу, поэтому пытаюсь использовать crontab и файл сценария. Вот мой файл сценария update.sh:
Rake::Task["update_listings"].execute
Я установил cron с помощью crontab-e, и он у меня выполняется каждые 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