什么是在午夜美国铁路中安排“随时”任务的最佳方法?

时间:2016-05-05 10:52:36

标签: ruby-on-rails-4 cron rake-task whenever

我们有一个Rails 4应用程序。 使用夏令时在午夜美国的rails中安排whenever任务的最佳方法是什么?

我们需要在当天晚上11点59分发送电子邮件。

我们正在使用tzinfo gem

TZInfo::Timezone.get('America/Denver').local_to_utc(Time.parse('11:58pm')).strftime('%H:%M%p')

当时没有发送电子邮件。

2 个答案:

答案 0 :(得分:7)

这适用于时区问题,服务器是UTC,另一个时区是用户(夏令时)。定义一个本地动作并在cronjob中使用。

schedule.rb

require "tzinfo"

def local(time)
  TZInfo::Timezone.get('America/Denver').local_to_utc(Time.parse(time))
end

every :sunday, at: local("11:58 pm") do
 #your email sending task
end
希望它会对你有所帮助。

答案 1 :(得分:0)

Rehan 的回答太棒了!在我的用例中,我遇到了一个问题,即时区转换也改变了任务安排在一周中的哪一天。

也许有更简单的方法,但这就是我所做的。 我们需要的时区转换只会提前工作日。 如果您的用例需要撤回工作日,那么您需要编辑它,但这应该很容易解决。

export PATH="$PATH:$(yarn global bin)"