2016-05-23 32 views
0

Die Uhr meines Servers ist auf Londoner Zeit eingestellt (ich lebe derzeit in der GMT + 0 Zone). Die Ausgabe von timedatectl status gibt mir dies:Rails verwendet keine Sommerzeit

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 

Und in meiner application.rb Datei habe ich die Zeitzone:

config.time_zone = 'London' 

Lokal, es funktioniert recht:

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

Aber in der Produktion scheint DST nicht zu sein.

Ich bin mir nicht sicher, ob es eine Rails-Sache oder eine Server-Fehlkonfiguration ist, aber für mich scheint es richtig.

+0

Gibt es Ihnen eine andere Zeitzone oder sogar eine andere Zeit (UTC) oder ist es wirklich nur die Sommerzeit? – xyious

+0

haben Sie versucht 'config.time_zone = 'London'' 'config.active_record.default_timezone =: local'? –

+0

Vielleicht ist das Datum/die Uhrzeit der Produktion falsch (immer noch im Winter)? – BoraMa

Antwort

2

Wenn diese Anwendung in einem Andockcontainer ausgeführt wird, wird die Zeitzone des Hostservers möglicherweise nicht auf die Container angewendet. Sie können die Umgebungsvariable TZ wahrscheinlich auf die gewünschte Zeitzone setzen und Ruby wird sie abholen.

Ich empfehle nicht mit nicht-UTC Zeitzone für Ihre Anwendung/Datenbank, da es fast sicher Probleme auf der ganzen Linie verursachen wird.

Volle Offenbarung: Ich bin einer der Dokku Maintainer.

+0

Das hat funktioniert. Ich habe gerade 'dokku config gemacht: set app-name ENV = prod TZ = Europa/London'. Gracias @Jose. – pzin