2012-03-09 3 views
1

У меня есть рубин на рельсах (1.9.2 и 3.2), работающий на Heroku с Redis/Resque, который требует, чтобы задача рейка была установлена ​​в очередь через равные промежутки времени. Прямо сейчас я запускаю «heroku run rake update_listings» с моей локальной машины один или два раза в день .... Я хотел бы автоматизировать это. Я пробовал когда-либо драгоценный камень, но задача не запускалась в фоновом режиме. Планировщик 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 

Когда я побежал: hourly_feed задачу из консоли Heroku планировщика и проверил журналы Heroku, я видел несколько веб динамометрических стендов получить раскручиваются по hirefireapp, но update_listings граблям задача никогда не было вызвана.

Обновление: я отказался от resque_scheduler. Я слишком зеленый, чтобы сделать эту работу, поэтому стараюсь использовать crontab и sript-файл. Вот мой update.sh файл сценарий:

Rake::Task["update_listings"].execute 

Я установил хроны с помощью кронтаб-е, и я это выполняется каждые 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 отлично работает ... Я просто забыл цитаты вокруг «обновленных списков».

0

Лично я использовал resque_scheduler, которые будут добавлять задания в очередь спасательное/Redis с помощью хрон.

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 в сценарии оболочки и использовать кронтаб для запуска задания.

+0

Спасибо, я обновил свой вопрос с некоторыми проблемами. Я столкнулся с попыткой решения crontab. – tbone

+0

Как ваша установка для прошивки для этого @TomDunning http://stackoverflow.com/questions/41537142/heroku-procfile-resque-puma-rails-5-resque-scheduler-setup –

+0

@chrishough, для чего? Выполнить планировщик? Это часть драгоценного камня resque_scheduler – TomDunning