我们有一个Rails 4应用程序。
使用夏令时在午夜美国的rails中安排whenever
任务的最佳方法是什么?
我们需要在当天晚上11点59分发送电子邮件。
我们正在使用tzinfo
gem
TZInfo::Timezone.get('America/Denver').local_to_utc(Time.parse('11:58pm')).strftime('%H:%M%p')
当时没有发送电子邮件。
答案 0 :(得分:7)
这适用于时区问题,服务器是UTC,另一个时区是用户(夏令时)。定义一个本地动作并在cronjob中使用。
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)"