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



我想知道我应该如何去做这个项目。我需要每周给人们发一次电子邮件。然而,这必须是自动生成的,并在每周的特定时间发送。编写代码有多难?我想知道怎么做有没有什么书能帮上忙或者你们谁能给我指路。它必须使用ruby on rails编程。因此就有了一个集成了web服务和数据库的系统。欢呼声

为什么这么复杂?

你只需要安排一个作业。例如,您可以使用Delayed::JobDelayed::Job让您可以使用run_at符号在特定时间调度作业,如下所示:

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

你的工作是一个必须实现perform方法的类。在此方法中,您可以调用负责发送电子邮件的邮件发送器。scheduled_at可以存储在数据库中,并在每次perform方法运行时更新。

对于书籍,Rails Recipes的第6章专门介绍了电子邮件。《Advanced Rails Recipes》一书中有关于异步处理和电子邮件的章节。还有专门用于发送电子邮件和编写自定义守护进程的railscast。

您可以使用像whenever这样的gem来调度循环任务。

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

也许你可以试试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')

最新更新