簡體   English   中英

在Heroku上使用config.time_zone的Rails,Rake計划的任務和DateTime

[英]Rails, Rake scheduled tasks and DateTime with config.time_zone on Heroku

我似乎總是很難理解這一點...

我讓Heroku調度程序每10m運行一次,以尋找要運行的新調度作業,但我期望的時候它沒有運行-時區不同,但是我不清楚我應該如何進行比較,因此它無法正常工作我預計。

在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

現在,我剛剛看到的並沒有達到預期效果的確切示例是:

  1. 新西蘭的用戶設置了一個計划,其下一個運行時間為2月18日(星期三)上午10點
  2. 根據上述任務,該操作實際上是在2月17日星期二晚上9點之后執行的

差異是NZ時區+13小時。

問題是,我應該如何進行比較以使計划如期啟動?

更新1:在經過一番混亂之后,一些特定的項目對我有用:

  1. 按照下面的答案,我將服務器時區設置為我想要的一個
  2. 我已經從配置文件中刪除了default_timezone條目-這真是讓我頭暈了頭腦!
  3. 將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

對於您的情況,我是:

heroku config:add TZ="Pacific/Auckland"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM