2017-08-17 4 views
1

Time.currentのドキュメントは言う:RailsでTime.currentをTime.zone.now上で使用する理由は、Time.zoneが常に設定されている場合ですか?

返しTime.zoneまたはconfig.time_zoneが設定されているTime.zone.now、 をそうちょうどTime.nowを返します。

# File activesupport/lib/active_support/core_ext/time/calculations.rb, line 36 
def current 
    ::Time.zone ? ::Time.zone.now : ::Time.now 
end 

しかし、Railsの中に、これまでないセットはTime.zoneありますか?

# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. 
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. 
# config.time_zone = 'Berlin' 

私はconfig.time_zoneをコメントアウトしていると、それは明らかに、デフォルトでコメントが言及していることを設定しますように私はまだ「UTC」に等しいTime.zoneを取得します。では、をTime.zone.now以上に使用するポイントは何ですか?

PS:私はRailsの4.1.16

答えて

1

上でこれを見てる短い答えは、あなたがあるとしてRailsを使用している場合、クリーナー/短い構文を除いては差がないです。

Time.zone_defaultはActiveSupport::Railtieactive_support.initialize_time_zoneで初期化されます。鉄道の初期化プロセスの詳細情報here

このチェックの理由から私は、フレームワークとして、誰かがレールのブートプロセスからこのactive_support.initialize_time_zoneを削除した状況を考慮していると考えています。その場合、Time.zonenilとなります。

関連する問題