2009-04-06 3 views
2

これは本当に奇妙なRailsの問題である - 私は、これは既知のバグに関連しているかどうかを確認するためにGoogleで検索しましたが、何も見つかっていない - 便利なリンクだけでなく、ソリューションのgratfeulだろう。タイムゾーンすごみ

私はこのまで問題を沸かすことができます。私は私のRailsのアプリケーションを起動した場合

、およびHTTPリクエストを経由して、次のRailsのコードを実行します。

Time.zone = 'Europe/London' 
logger.info Time.zone.inspect 

ログ・ショーは、このタイムゾーン

#<ActiveSupport::TimeZone:0x3d7438c @tzinfo=nil, @name="UTC", @utc_offset=0> 
非常に次の要求で

(最も後続の要求)として、コードの同じ行のログは、この

#<ActiveSupport::TimeZone:0x46cc100 @tzinfo=#<TZInfo::DataTimezone: Europe/London>, @name="Europe/London", @utc_offset=nil> 

示します誰が何が起こっているのか知っていますか?

編集(それが助け場合、私はRailsの2.3.2を実行している):Railsの2.2.2はこの問題を持っていないので、私は今のところに戻りますことが表示されます。それは漬けて復元することができるように

答えて

4

ActiveSupport::TimeZoneはTime.zoneを傍受されます。これは、(変更がすぐに表示されません理由です)何らかの理由で遅延して行われます。そこクロスセッションとマルチスレッドの問題はここにある、と私はそれの権利を知りません。すべて私に言えることは、次のとおりです。

  • あなたが本当に見ている、それはそのようにコード化されているため、(それは明らかではないが、この
  • を修正についてオープンなTODO項目があります
  • 起こっ
  • 起こっています私は少なくとも世界的に「正しい」行動がすべきである)。

この種の機能の基本的な問題は、アプリケーションプログラマーの意図の範囲をセッター内から識別する明確な方法がないことです。これはサイト全体の設定ですか?セッション全体の設定?渡すファンシー?コンフィギュレーション・パラダイムを超える大会で

、そのようなことは、それらを解決するための規則を必要とし、この地域はまだ1を得ていません。