使用rails计划任务

我一直在讨论rails调度任务选项,偶尔发现这段代码。

case @environment when 'production' every 1.day, :at => "#{Time.parse('12:00 A').getlocal.strftime("%H:%M")}" do runner "Company.send_later(:create_daily_stories!)" end when 'staging' every 15.minutes do command "thinking_sphinx_searchd reindex" end end 

我对ruby很新,我不太明白这里的“公司”代表什么。 换句话说,我想发送一封电子邮件给人们,我有一个名为email_controller的控制器类,我有一个名为sendEmail的方法,我想用这个发送电子邮件,我该怎么做? 我应该说跑步者“email_controller.sendEmail”或类似的东西? 我不太明白。 注 – 我是否使用模型或控制器代替公司?

在这种情况下, Company是一个示例模型,它有一个名为create_daily_stories!的类/单例方法create_daily_stories! 。 理论上,它可能看起来像这样:

 class Company < ActiveRecord::Base # Send out daily stories to all companies def self.create_daily_stories! # Do some stuff end end 

理想情况下,生成电子邮件驻留在业务逻辑中,因此应该包含在模型中(假设您正在使用像rails这样的MVC框架)。

Resque是安排任务的好方法。
看看Resque Railscast 。

或者可能是这个Rails:使用Redis,Resque和Rufus的Cron作业调度 。