Я прочитал документацию о рабочих и задержанных_job и не мог точно следовать, поэтому хотел получить начальную стратегию и образец кода.Как использовать delayed_job на heroku для отправки отправленных писем?
У меня есть контроллер, который я использую для отправки писем один за другим. Теперь каждый день я хочу проверить, какие письма нужно отправить за день, а затем отправить их через героку как delayed_job.
Как мне приблизиться к этому? Благодарю.
Это то, что я придумывая на основе ответов:
Использование «при» драгоценный камень, я создал следующий schedule.rb
every 1.day, :at => '4:30 am' do
heroku = Heroku::Client.new(ENV['HEROKU_USER'], ENV['HEROKU_PASS'])
heroku.set_workers(ENV['HEROKU_APP'], 1)
Contact.all.each do |contact|
contact_email = contact.email_today
unless contact.email_today == "none"
puts contact.first_name
puts contact_email.days
puts contact.date_entered
Delayed::Job.enqueue OutboundMailer.deliver_campaign_email(contact,contact_email)
end
end
heroku.set_workers(ENV['HEROKU_APP'], 0)
end
Чтобы определить, должен ли я отправьте электронное письмо сегодня или нет, я создал метод для contact.rb:
def email_today
next_event_info = self.next_event_info # invokes method for contact
next_event = next_event_info[:event]
delay = next_event_info[:delay]
if next_event.class.name == "Email" && from_today(self, next_event.days) + delay < 0 #helper from_today
return next_event
else
return "none"
end
end
Справедливо ли это? Я занимаюсь разработкой на окнах и развертыванием на героку, так что не знаю, как его протестировать ... спасибо!
Могу ли я проверить функциональность cron на моей локальной среде windwos? Есть ли способ добавить работников из контроллера (против использования консоли)? – Angela
Я поставил свою попытку включить и выключить рабочих для этой работы (поэтому я не плачу) ... не уверен, правильно ли это ... что вы думаете? – Angela
Посмотрите на вилку с отложенной работой Педро, которая включает в себя автоматическое масштабирование рабочих герою. http://github.com/pedro/delayed_job/tree/autoscaling – mark