2016-05-23 9 views
0

Часы моего сервера настроены на лондонское время (сейчас я живу в зоне GMT ​​+ 0). Выход timedatectl status дает мне это:Rails не применяет летнее время

Local time: Mon 2016-05-23 08:13:06 BST Universal time: Mon 2016-05-23 07:13:06 UTC 
    RTC time: Mon 2016-05-23 07:13:06 
    Timezone: Europe/London (BST, +0100) 
NTP enabled: yes NTP synchronized: no RTC in local TZ: no 
    DST active: yes Last DST change: DST began at 
       Sun 2016-03-27 00:59:59 GMT 
       Sun 2016-03-27 02:00:00 BST Next DST change: DST ends (the clock jumps one hour backwards) at 
       Sun 2016-10-30 01:59:59 BST 
       Sun 2016-10-30 01:00:00 GMT 

И в моем файле application.rb я установить часовой пояс:

config.time_zone = 'London' 

Локально, он работает правильно:

Time.now.dst? 
# true 
Time.now.hour 
# 8 

Но в производстве не кажется, что DST включен.

Time.now.dst? 
# false 
Time.now.hour 
# 7 

Я не уверен, если это Рельсы вещь или расконфигурация сервер, но для меня это кажется правильным.

+0

Дает ли вам другой часовой пояс или даже другое время (UTC) или это действительно просто летнее время? – xyious

+0

вы пробовали 'config.time_zone = 'London''' config.active_record.default_timezone =: local'? –

+0

Возможно, дата/время на производстве ошибочно (все еще зимой)? – BoraMa

ответ

2

Если это приложение работает в контейнере докеров, часовой пояс на главном сервере не может быть применен к контейнерам. Вероятно, вы можете установить переменную окружения TZ в любой часовой пояс, который вам нужен, и рубин подберет его.

Я настоятельно рекомендую не с использованием часового пояса без UTC для вашего приложения/базы данных, так как это почти наверняка вызовет проблемы на линии.

Полное раскрытие информации: Я являюсь одним из сопровождающих докку.

+0

Это сработало. Я просто сделал «dokku config: set app-name ENV = prod TZ = Europe/London'. Gracias @Jose. – pzin