ssc*_*rus 2 cron ruby-on-rails whenever delayed-job ruby-on-rails-3
我有一个系统,用户进入一个包含多个部分的应用程序进程 - 有时用户会保存他们的进度并稍后再回来.
我想向用户发送电子邮件,如果他们没有在48小时内回来-这将是最好做到这一点使用cron,delayed_job或whenever?
我注意到,每当我在控制台中运行操作(例如bundle install或rake db:migrate)时,它也运行cron,这让我怀疑我们可能有用户在同一天获得多个提醒的情况.
你有什么建议吗?
首先,每当和Cron是同义词.All Whenever提供了一种使用Ruby编写cronjobs的方法(这很棒,我喜欢Whenever).
Delayed_job不是这里的答案.你肯定想用cronjobs.在您的应用程序模型上创建一个方法,该方法将获得具有updated_at值< 2.days.ago并通过电子邮件发送其申请人的应用程序.
def notify_stale_applicants
  @stale_applications = Application.where('updated_at < ?', 2.days.ago) # or 48.hours.ago
  @stale_applications.each do |app|
    UserMailer.notify_is_stale(app).deliver
  end
end
而你的UserMailer:
def notify_is_stale(application)
  @application = application
  mail(:to => application.user.email, :from => "Application Status <status@yourdomain.com>", :subject => "You haven't finished your Application!"
end
使用随时创建此cron:
every :day, :at => '8am' do
  runner 'Application.notify_stale_applicants'
end
| 归档时间: | 
 | 
| 查看次数: | 935 次 | 
| 最近记录: |