ruby on rails - 在确定的时间发送电子邮件

时间:2014-03-16 20:17:08

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2

我想在我的应用程序中实现下一步:用户希望每天或每周二15:00他从我的应用程序收到电子邮件,并且电子邮件发送时间由用户控制。我怎么能在我的应用程序中做到这一点?

感谢'!小号

2 个答案:

答案 0 :(得分:1)

这称为cron作业,您可以在其中指定执行某个操作的特定时间。为此你可以使用"每当"宝石,这是重复任务的伟大。有了这个宝石,你可以写这样的东西

every :day, :at => '12:20am' do
  rake 'foo:bar'
end

有关详情,请查看:

https://github.com/javan/whenever

答案 1 :(得分:1)

您可能希望使用delayed_jobsidekiq。使用delayed_job,您可以将作业排入队列以便将来运行,因此您可以将run_at更新为用户指定的内容。

您可能需要考虑用户的时区,delayed_job run_at将是UTC - 如果您有兴趣,我在rails timezones上写了一篇博文

延迟工作排队工作:

run_at = 'TODO: convert user specified params to UTC datetime'
job = SomeEmailJob.new(current_user.id)
Delayed::Job.enqueue(job, run_at: run_at)