加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Heroku上使用config.time_zone进行Rails,Rak

发布时间:2020-12-17 02:07:45 所属栏目:百科 来源:网络整理
导读:我似乎总是很难理解这个…… 我有一个Heroku调度程序,每10米运行一次,寻找新的预定作业,但是当我预期它没有运行时 – 差异是时区但是我不清楚我应该如何进行比较,所以它的运行方式我预计. 在我们的rake任务中: schedules = Schedule.where('status in (?) a
我似乎总是很难理解这个……

我有一个Heroku调度程序,每10米运行一次,寻找新的预定作业,但是当我预期它没有运行时 – 差异是时区但是我不清楚我应该如何进行比较,所以它的运行方式我预计.

在我们的rake任务中:

schedules = Schedule.where('status in (?) and next_run < ?',['new',nil,''],DateTime.current)

在application.rb中

config.time_zone = 'Auckland'
config.active_record.default_timezone = :local

现在,我刚刚看到的确切示例没有达到预期的效果:

>新西兰的用户在2月18日星期三上午10点设定了一个时间表
>根据上述任务,这实际上是在2月17日星期二晚上9点之后运行的

差异是新西兰时区的13个小时.

问题是,我应该如何进行这种比较,以便在我预期时获取计划?

更新1:
所以在经历了一些混乱之后,一些特定的项目对我有用:

>根据下面的答案,我将服务器时区设置为我想要的时区
>我已经从配置文件中删除了default_timezone条目 – 这真的是我的主题!
>将Date.now,Date.current,Time.now,Time.current,DateTime.now,Date.today等的所有各种组合替换为两个特定替换:
Time.zone.today(和类似的)和Time.zone.now(请参阅此博客了解所有多汁的细节http://danilenko.org/2012/7/6/rails_timezones/)

解决方法

使用heroku env变量设置默认时区:

heroku config:add TZ="America/Los_Angeles" # example for Los Angeles

我suppose,对于你的情况,它将是:

heroku config:add TZ="Pacific/Auckland"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读