これが状況です。heroku で実行されている Rails 3.2 アプリと、世界中の開発者がいます。すべてを UTC で標準化したいと考えています。私たちのチームは、私たちの間でも UTC を話します (例: 会議時間を計画するとき)。アプリにも同じことをさせたいと思っています。後で表示するために、物事を人々のローカルタイムゾーンに戻すことができます。
問題は、データベースに何かを保存するとき (たとえば、フォーラムで新しい投稿を作成するとき) に、ローカル時間 (コンピューターによって報告される) が UTC であると見なされ、そのように保存されることです。
たとえば、ここオーストラリアの晴れたメルボルン (UTC+11) の 2 月 14 日木曜日のランチタイムです。新しい投稿を作成してから、コンソールを確認します。
1.9.3p194 :009 > p = Post.first
=> #<Post id: 12, author_id: 1, subject: "Another post ", body: "a very recent one!", created_at: "2013-02-14 12:13:53", updated_at: "2013-02-14 12:13:53", slug: "test1-20130214-another-post", forum_id: 1>
1.9.3p194 :010 > p.created_at
=> Thu, 14 Feb 2013 12:13:53 UTC +00:00
ご覧のとおり、created_at タイムスタンプは 14 日のランチタイムとして保存され、その時刻IN UTCとしてフラグが立てられます。私が実際に望んでいるのは、現地時間を見て、私がメルボルンにいることを認識し、(この場合は) 11 時間を引いて UTC に変換することです。
これで、config/application.rb で次の行を編集できることがわかりました。
config.time_zone = 'UTC'
config.active_record.default_timezone = 'UTC'
(config.time_zone を「Australia/Melbourne」に変更すると修正されると思いますか?おそらく?)
ただし、そのいずれかを「オーストラリア/メルボルン」(またはその他) に変更すると、(Heroku に) デプロイされたアプリと、メリーランド、オレゴン、グラスゴーの共同開発者はどうなりますか? 時間を個別に設定する必要がありますか? おそらく、環境変数を介して行う必要がありますか? 他の提案はありますか?