#ruby-on-rails #ruby #ruby-on-rails-4 #cron
#ruby-on-rails #ruby #ruby-on-rails-4 #cron
Вопрос:
Мне нужно запланировать задание в rails, где метод будет вызываться в модели. Я знаю, что есть несколько драгоценных камней на основе cron, но все они предназначены для повторяющихся заданий, где, поскольку мне нужно выполнить задание только один раз, в установленное время. Есть ли драгоценный камень, который сделает это?
Комментарии:
1. Что-то в этом роде? serverfault.com/questions/111609 /…
2. @depa Да, это в основном то, что я ищу.
Ответ №1:
В Rails 4.2 будет установлена платформа Active Job framework для планирования заданий. Вы можете использовать драгоценный камень Active Job в Rails 4.1. Он служит стандартизированной оболочкой для нескольких систем массового обслуживания, включая Sidekiq и Resque (обе требуют Redis для обработки отложенных заданий). Использование Active Job дает вам гибкость при замене системы массового обслуживания, если это необходимо.
Вы можете запланировать задание с активным заданием следующим образом:
MyJob.enqueue_at(5.hours.from_now, record)
Разработчики Rails намерены сделать это стандартным механизмом для планирования заданий.
Взгляните на rails-mailinglist-регистрация в качестве примера приложения, чтобы узнать, как использовать Active Job.
Комментарии:
1. Большой поклонник твоей работы, Дэниел. Вы когда-нибудь использовали ActiveJob в качестве драгоценного камня с 4.1 или сразу перешли к Rails 4.2, чтобы использовать его? Я получаю
uninitialized constant ActiveJob
, когда пытаюсь использовать его как драгоценный камень с 4.1 и не могу определить, возможно это или нет.2. После того, как они выпустили Rails 4.2.0.beta1, ActiveJob больше не был доступен как автономный gem. Теперь он объединен в Rails 4.2. Я использую Rails 4.2. Я не знаю, можно ли использовать ActiveJob с 4.1.
Ответ №2:
При развертывании в Heroku есть надстройка планировщика.
В противном случае вы можете использовать Sidekiq Sidetiq для достижения того, что вы ищете.
Комментарии:
1. Согласно Sidetiq wiki, это для повторяющихся заданий, а не разовых. Это то, чего я пытаюсь избежать.
2. То же самое с планировщиком heroku.