2011-03-25 107 views
0

我有一个应用程序提供了一个日历,允许您创建日历上显示的事件。您设定的其中一个栏位是活动开始的那一天。我希望在活动的当天到达时能够发送电子邮件提醒。Rails按计划发送电子邮件

我是新来的铁路,所以我不完全确定我需要什么或从哪里开始。我阅读了ActionMailer的导轨指南并生成了一个邮件程序,我假设我需要其中的一个。我还阅读了观察员的导轨指南,并认为这可能是我想要完成的途径。

让我们说,每周7天在上午9点中央,应该运行一个工作(cron或rake任务),它搜索数据库中每个事件的'start_at'列(本地sqlite,带有heroku的Postegre)如果start_date等于'今天?'然后发送动作邮件模板来提醒用户。

那么建立工作来检查数据库并每天启动电子邮件的最佳方式是什么(以及使用什么工具)?在未来,我想这会提前提醒。

一些伪代码:

def send_email 
    if self.start_at == Date.today #assuming self.start_at.today? works too. 
    // send email 
end 

只是不知道如何得到那个工作。

回答

2

你可以有一个控制器/动作来完成它,然后使用cURL之类的命令按照指定的时间表从cron作业调用url。

+0

因此,沿着send_email EventMailer.reminder_email(@event).deliver结束并使用cron来调用cURL http:// localhost:3000/EventMailer或其他东西? – 2011-03-25 21:07:24

+0

是的,我在很多地方都这么做。效果很好。 – 2011-03-25 21:09:15

+1

这确实属于Rake任务(由cron调用)。 Rake任务会将作业排队,而作业运行员(delayed_job,resque)将开始执行并执行作业。 – yfeldblum 2011-03-26 09:45:19