Ruby on rails - нужно отправлять сообщения на электронные письма в определенное время недели - PullRequest
5 голосов
/ 20 сентября 2011

Я хотел бы знать, как мне поступить с этим проектом.Мне нужно отправлять электронные письма людям один раз в неделю.Однако это должно быть автоматически сгенерировано и отправлено в определенное время каждую неделю.Насколько сложно это кодировать?Мне нужно знать, как, если есть какие-нибудь книги, которые могут помочь или кто-то из вас может направить меня.Он должен быть запрограммирован с использованием ruby ​​на рельсах.Следовательно, есть веб-сервис и база данных.Приветствия

Ответы [ 4 ]

5 голосов
/ 20 сентября 2011

Почему этот комплекс?

Все, что вам нужно, это запланировать работу. Например, вы можете использовать Delayed::Job. Delayed::Job дает вам возможность запланировать работу в определенное время, используя символ run_at, например:

Delayed::Job.enqueue(SendEmailJob.new(...), :run_at => scheduled_at)    

Ваша работа - это класс, который должен реализовывать метод perform. Внутри этого метода вы можете вызвать почтовую службу, ответственную за отправку электронной почты. scheduled_at может храниться в базе данных и обновляться при каждом запуске метода perform.

3 голосов
/ 20 сентября 2011

Вы можете использовать камень типа whenever для планирования повторяющихся задач.

every :sunday, :at => '12pm' do
  runner "User.send_emails"       
end
3 голосов
/ 20 сентября 2011

Для книг, глава 6 Рельсовые рецепты посвящена электронной почте.В книге Advanced Rails Recipes есть главы по асинхронной обработке и электронной почте.Есть также railscast , посвященный отправке электронной почты и написанию пользовательских сообщений .

1 голос
/ 09 апреля 2014

Может быть, вы можете попробовать Заводной

require 'clockwork'
include Clockwork

handler do |job|
  puts "Running #{job}"
end

every(10.seconds, 'frequent.job')
every(3.minutes, 'less.frequent.job')
every(1.hour, 'hourly.job')

every(1.day, 'midnight.job', :at => '00:00')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...