36 votes

Pourquoi Heroku se connecte-t-il en utilisant l'heure du serveur plutôt que le fuseau horaire Rails?

Mise à JOUR: Ok, je n'ai pas formuler une bonne Q de réponse. J'ai encore du mal avec heroku être sur -07:00 UTC et moi au +02:00 UTC.

Q: Comment puis-je obtenir le journal écrit dans le bon Temps.la zone ? Les 9 heures de décalage, heroku (ouest des etats-unis) - la norvège, est une source de distraction pour travailler avec. Je reçois dans ma production.journal (à l'aide d' heroku logs):

Traitement ProductionController#créer au format xml (pour 81.26.51.35 à 2010-04-28 23:00:12) [POST]

Comment puis-je obtenir pour écrire 2010-04-29 08:00:12 +02:00 GMT ?

Notez que je suis en cours d'exécution à heroku et ne peut pas définir le serveur de temps moi-même, comme on pourrait le faire à votre amazon EC2 serveurs. Ci-dessous ma question précédente, je vais le laisser tel qu'il détient des informations intéressantes sur le temps et les zones.


Pourquoi est - Time.now de rendement le serveur, heure locale, lorsque j'ai mis le fuseau horaire dans mon environment.rb

config.time_zone = 'Copenhagen'

Je l'ai mis dans une vue

<p> Time.zone <%= Time.zone %> </p>
<p> Time.now <%= Time.now %> </p>
<p> Time.now.utc <%= Time.now.utc %> </p>
<p> Time.zone.now <%= Time.zone.now %>  </p>
<p> Time.zone.today <%= Time.zone.today %> </p>

le rendu de ce résultat sur mon application sur heroku

Temps.horaire (GMT+01:00) Copenhague

Temps.maintenant Lun Avr 26 08:28:21 -0700 2010

Temps.maintenant.utc Lun Avr 26 15:28:21 UTC 2010

Temps.la zone.maintenant 2010-04-26 17:28:21 +0200

Temps.la zone.aujourd'hui 2010-04-26

Time.zone.now donne le résultat correct. Dois-je passer de Time.now de Time.zone.now, partout? Semble lourd. J'ai vraiment ne se soucient pas ce que l'heure locale du serveur, c'est de me donner des charges de la difficulté en raison de l'utilisation extensive de Time.now. Suis-je un malentendu quelque chose de fondamental ici?

76voto

sevennineteen Points 999

Après une enquête dans ma propre Heroku fuseau horaire problèmes, j'ai trouvé un post qui indique que vous pouvez spécifier le fuseau horaire au niveau de l'application, à l'aide de la commande suivante:

heroku config:add TZ=Europe/Oslo

Je crois que ce peut être la réponse à tous vos problèmes. Courtoisie de http://www.reality.hk/articles/2010/01/07/1319/ (Edit: lien Brisé comme de 2012.08.23. Une copie d'archive.)

3voto

sevennineteen Points 999

Sans pouvoir modifier l'heure réelle du serveur (ce que je ne pense pas que vous pourrez le faire sur Heroku), votre seule option est de convertir les heures vous-même.

Si Time.zone.now est trop lourd, vous pouvez définir un fuseau horaire global à l'aide de la gemme tzinfo :

 $tz = TZInfo::Timezone.get("Europe/Oslo")
$tz.now # current time in Norway
 

Mais cela reste un changement global dans votre application et pas très différent de ce que vous faites.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X