Какой самый элегантный способ реализовать дайджест электронной почты, не изобретая заново систему очередей?

Моя система транзакционной электронной почты настроена, и по умолчанию люди получают электронные письма по мере того, как происходят события:

class Comment

  after_create :email_original_poster

  def email_original_poster
    UserMailer.delay.notify_author_of_comment self
  end

end

Однако вместо того, чтобы получать электронное письмо как оно есть, кусок моих пользователей предпочли бы ежедневный или еженедельный дайджест.

Какой самый чистый и элегантный способ реализовать это?

У меня уже есть delayed_job , но на самом деле это не похоже на задание delayed_job , так как я постановка в очередь данных, которые необходимо обработать, а не действий, которые необходимо выполнить.

... не изобретая заново систему очередей

Я знаю, что очевидным решением является таблица queued_emails , и, конечно, я мог бы это сделать. Причина, по которой я задаю этот вопрос, заключается в том, что это значит заново изобретать систему очередей. Существует не только множество систем очередей, но и, как указывает этот хорошо сформулированный пост от Percona, неплохо не катить свою собственную:

http://www.engineyard.com/blog/2011/5- тонкие-способы-вы-используете-mysql-as-a-queue-and-why-itll-bite-you /

Реализовали ли вы дайджест электронной почты, использовали ли вы delayed_job и что вы сделали узнать?

6
задан Peter Nixey 28 September 2011 в 20:16
поделиться