Ruby on rails - 需要在一周的特定时间向电子邮件发送消息

时间:2011-09-20 16:33:30

标签: ruby-on-rails ruby rubygems email-integration

我想知道我应该如何处理这个项目。我需要每周向人们发送一次电子邮件。但是,必须自动生成并在每周的特定时间发送。代码有多难?我需要知道如果有任何书籍可以提供帮助,或者你是否有人可以指导我。它必须使用ruby在轨道上进行编程。因此,集成了Web服务和数据库。干杯

4 个答案:

答案 0 :(得分:5)

为什么这很复杂?

您所需要的只是安排工作。例如,您可以使用Delayed::JobDelayed::Job可让您使用run_at符号在特定时间安排作业:

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

您的工作是必须实施perform方法的课程。在此方法中,您可以致电负责发送电子邮件的邮件程序。 scheduled_at可以存储在数据库中,并在每次perform方法运行时更新。

答案 1 :(得分:3)

对于书籍,Rails Recipes的第6章专门用于电子邮件。本书Advanced Rails Recipes有关于异步处理和电子邮件的章节。还有railscast致力于sending email并撰写custom deamons

答案 2 :(得分:3)

您可以使用像whenever这样的宝石来安排重复任务。

every :sunday, :at => '12pm' do
  runner "User.send_emails"       
end

答案 3 :(得分:1)

也许你可以尝试clockwork

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')