Вопрос

Есть ли в любом случае настроить простое планирование задач внутри приложения Rails? Есть кусочки кода, которые я хочу запускать каждый час, или каждый день или каждую неделю. Я не хочу разбивать их на отдельные сценарии, которые мне тогда приходится планировать с помощью работ Cron. Если бы я сделал это, то мне пришлось бы помнить, чтобы сделать резервную копию сценариев, и если я перестраиваю сервер, я должен пойти и добавить все задания Cron, это кажется немного грязным для того, что мне нужно.

Хотелось бы, чтобы я просто запланировал работу где -то в моем приложении Rails, и попросил их волшебным образом бежать, когда я хочу их! Любые идеи?

Это было полезно?

Решение

Для этого есть драгоценные камни/плагины, такие как Rufus-Scheduler или более популярный «всякий раз». Мне нравится решение @douglassellers, хотя я не слышал об этом.

Другие советы

Я использую отложенную работу, «базу данных, поддерживаемую асинхронную очередь приоритетных приоритетов», для достижения чего -то подобного. Посмотри на http://github.com/tobi/delayed_job

Вам все равно понадобится что -то, что начинает «Работа по рисованию: работа», но это лучше, чем иметь много разных рабочих мест Cron. Обратите внимание на документацию: атрибут: run_at - это похоже на то, что он может решить «Расписание a задания где -то в моем приложении Rails, и пусть они волшебным образом запускаются, когда я хочу, чтобы они».

Вы можете использовать что -то вроде Rails Cron (Gem Install Rails_cron), чтобы сделать это, который вращается с другого процесса Rails, посвященного выполнению запланированных фоновых задач. Я бы порекомендовал сделать это таким образом, так как экземпляр Extra Rails должен будет контролироваться, останавливаться и начать вместе с остальной частью вашего приложения и, по моему опыту, очень подвержен падению.

Лучшее решение - просто использовать Craken, http://github.com/latimes/craken, чтобы управлять Crontabs через файлы YAML в вашем приложении Rails. Каждое запланированное задание определяется в файле YAML, а затем при развертывании Crakens решает, должен ли файл Crontab System Crontab быть обновлен или нет. Он подключается прямо к вашему файлу развертывания Capistrano и достаточно поворота. Это дает преимущество в том, что он все еще управляет вашими запланированными задачами в приложении Rails, в то время как фактически выполняет их с помощью Cron уровня ОС.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top