私の Sinatra アプリは単純なオブジェクトを作成し、それを Postgres に永続化しています:
post '/' do
event = Event.new(params)
event.created_at = Time.now.utc
event.date = next_date(params[:dayofweek], params[:time]) if params[:dayofweek] && params[:time]
if event.save
status 201
event.to_json
else
json_status 400, event.errors.to_hash
end
def next_date(dayofweek, hour)
...
# some calculations that effectively culminate in the final line below
...
my_time = Time.utc(2012, 11, 9, 12, 0, 0) ## => 2012-11-09 12:00:00 UTC
end
オブジェクトは正常に保存されました。しかし、development
環境からオブジェクトを取得すると、(json) が得られます。
{ ..., "date":"2012-11-23T20:00:00-08:00" } #notice the PST offset of -08:00.
UTC タイム ゾーンまたは +00:00
. 何らかの理由で、PST にある私の開発ワークステーションは、Postgres に保存するときに独自のタイムゾーンを考慮しています...少なくとも、それは何をしているように見えますか?!?
同じコードを本番サーバー (Heroku) に送信すると、同じデータが適切なオフセットで保存されます。+00:00
開発用ワークステーションを本番用ワークステーションのように動作させるにはどうすればよいですか? または、Sinatra で適切な UTC Date オブジェクトを作成するにはどうすればよいですか?