使用rails在特定时间发送电子邮件

时间:2018-01-16 15:46:16

标签: ruby-on-rails email ruby-on-rails-5

我希望从星期一到星期五上午11:00自动向所有供应商发送订单清单。我怎样才能做到这一点 ?

我正在使用Rails 5.1

我知道ActiveJobs具有Notifier.deliver_later功能,但如果我正确,它只适用于相对时间(例如:从现在起10小时)。我实际上需要在11:00精确发送电子邮件。

2 个答案:

答案 0 :(得分:2)

您可以使用whenever gem执行此任务。它为编写和部署cron作业提供了清晰的语法。

安装此gem或添加gemfile。转到项目目录并运行whenevrize .

$ cd /apps/my-great-project
$ wheneverize .

它会在您的项目中创建一个config/schedule.rb文件。现在,您可以在此文件中添加任务,宝石将处理所有事情。

对于你的情况,它看起来像这样。

every :weekday, at: '11:00 am' do
  runner "MyModel.task_to_run_at_eleven_in_the_morning_on_weekdays"
end

答案 1 :(得分:1)

我建议你使用Sidekiq和Sidekiq-cron这个宝石可以在高负荷项目上工作,有Sidekiq UI(来自Sidekiq),你可以从Sidekiq UI端观察并重新启动你的工作。

Sidekiq更灵活,更有用,可以兼顾并发,拥有特权等队列(Sidekiq的所有优点)