Планирование задач с помощью рельсов - PullRequest
0 голосов
/ 15 ноября 2011

Я перебираю опции планирования задач рельсов и наткнулся на этот кусок кода с любого места.

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» или что-то подобное?Я не совсем понимаю.Примечание. Использую ли я модель или контроллер вместо компании?

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

В этом случае Company - это пример модели, в которой есть метод класса / singleton, называемый create_daily_stories!. Теоретически это будет выглядеть примерно так:

class Company < ActiveRecord::Base

  # Send out daily stories to all companies
  def self.create_daily_stories!
    # Do some stuff
  end
end

В идеале генерация электронных писем находится в бизнес-логике и поэтому должна содержаться в модели (при условии, что вы используете MVC-фреймворк, такой как rails).

1 голос
/ 15 ноября 2011

Resque - отличный способ для планирования задач.
Взгляните на Resque Railscast .

или, возможно, это Rails: планирование заданий Cron с использованием Redis, Resque и Rufus .

...