TimeZone по умолчанию с ActiveSupport (без направляющих)

Как TimeZone по умолчанию становится установленным в ActiveSupport?

Вот то, что происходит:

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

Как я устанавливаю это на текущее местоположение по умолчанию?

9
задан Lance Pollard 19 June 2010 в 14:12
поделиться

1 ответ

в rails он устанавливается в environment.rb через инициализатор rails

Rails::Initializer.run do |config|
    config.time_zone = 'Pacific Time (US & Canada)'
    # ...

Я только что провел тест и когда config.time_zone закомментирован Time.zone также возвращает nil в проекте rails; так что я думаю, что нет "по умолчанию", он просто устанавливается в инициализаторах

Полагаю, вы уже знаете, что это будет "работать"?

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>>

Примечание: приведенный выше код использует rails 2.2.2. Возможно, в более новых версиях все иначе?

Примечание редакторов: В rails >= 3.0 все monkey-патчи были перемещены в пространство имен core_ext, поэтому вышеприведенный require не расширяет Time. Для более поздних версий ActiveSupport используйте следующее:

require 'active_support/core_ext/time/zones'
7
ответ дан 3 November 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: