これまでアプリケーションで共通の設定はconfig/application.rb
に記述していたが、Rails5からは
# Settings in config/environments/* take precedence over those specified here.
# Application configuration should go into files in config/initializers
# -- all .rb files in that directory are automatically loaded.
とあるように、config/initializers/
以下に個別にファイル作ってそこで設定しようという方針になっているようだ。
そこでconfig/initializers/time_zone.rb
というファイルを新規作成し
Rails.application.config.time_zone = 'Tokyo'
としたが、Time.zone
はUTCのままでViewでレンダリングされるcreated_atも変わらず。。
ググったところ以下の情報が見つかった。
But you shouldn't assign some values such as time_zone in an initializer. Because Rails.application.config.time_zone will work, but Time.zone won't. Time.zone_default is assgined before the initializer.
どうやらinitializers/*.rb
が走る前にTime.zone_default
が初期化されているらしい。該当のソースコードはこちら
ということで結局Rails5以前と同じようにconfig/application.rb
にconfig.time_zone = 'Tokyo'
を追記することでタイムゾーン設定を変更できた。