我一直在讨论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
我对红宝石很新,我不太明白这里的“公司”代表什么。换句话说,我想向人们发送一封电子邮件,我有一个名为email_controller的控制器类,其中我有一个名为sendEmail的方法,我想用这个发送电子邮件,我该怎么做?我应该说跑步者“email_controller.sendEmail”还是那样的?我不太明白。注 - 我是否使用模型或控制器代替公司?
答案 0 :(得分:2)
在这种情况下,Company
是一个示例模型,它具有一个名为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框架)。
答案 1 :(得分:1)
Resque是安排任务的好方法 看看Resque Railscast。
或可能是Rails: Cron Job Scheduling using Redis, Resque and Rufus。