Railsでは、Rails初期化子を介してenvironment.rbに設定されます
Rails::Initializer.run do |config|
config.time_zone = 'Pacific Time (US & Canada)'
# ...
テストを行ったところ、config.time_zoneがコメント化されると、Time.zoneもrailsプロジェクトでnilを返します。だから私はそれが初期化子で設定されるだけの「デフォルト」はないと思います
これが「機能する」ことをすでに知っていると思いますか?
irb -r 'rubygems'
ruby-1.8.7-p174 > require 'active_support'
ruby-1.8.7-p174 > require 'active_support/time_with_zone'
ruby-1.8.7-p174 > Time.zone
ruby-1.8.7-p174 > nil
ruby-1.8.7-p174 > Time.zone = 'Pacific Time (US & Canada)'
ruby-1.8.7-p174 > Time.zone
=> #<ActiveSupport::TimeZone:0x1215a10 @utc_offset=-28800, @current_period=nil, @name="Pacific Time (US & Canada)", @tzinfo=#<TZInfo::DataTimezone: America/Los_Angeles>>
注:上記のコードはレール2.2.2を使用していますが、新しいバージョンでは状況が異なる可能性がありますか?
編集者注:rails> = 3.0では、すべてのモンキーパッチがcore_ext
名前空間に移動されているため、上記のrequireは拡張されませんTime
。それ以降ActiveSupport
のバージョンでは、以下を使用します。
require 'active_support/core_ext/time/zones'