ActiveJob: автоматически запускать задание при запуске сервера

Например, у меня есть работа, которую я хочу повторять каждые 1 час. Вот мой код:

class NewsletterJob < ApplicationJob
  queue_as :default

  after_perform do |job|
     NewsletterJob.set(wait: 1.hour).perform_later user
  end

  def perform(*args)
    puts "I am busy mailing newsletter."
  end
end

Мой вопрос: как я могу вызвать приведенный выше код, который удовлетворяет 2 условиям:

  • запускается автоматически при запуске сервера.
  • запустить только один раз. Например, я использую sidekiq для очереди сообщений. Поэтому я хочу, чтобы при следующем перезапуске сервера был доступен только один экземпляр задания.

person Trần Kim Dự    schedule 15.03.2017    source источник
comment
Этот вопрос, вероятно, может быть полезен stackoverflow .com/questions/10972450/   -  person Slava.K    schedule 15.03.2017


Ответы (1)


Здесь есть список проектов cron https://github.com/mperham/sidekiq/wiki/Related-Projects#recurring-jobs

person Mike Perham    schedule 15.03.2017