使用rails计划任务

时间:2011-11-15 15:44:45

标签: ruby-on-rails ruby ruby-on-rails-3 background scheduled-tasks

我一直在讨论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”还是那样的?我不太明白。注 - 我是否使用模型或控制器代替公司?

2 个答案:

答案 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