結論
config.time_zone
の設定は config/initializers/*
下ではなく、config/application.rb
に書く。
経緯
たぶん Rails 5 から、config/application.rb
に下記のような記述があって、素直に config/initializers/*.rb
下に設定を書いていた。
# 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/time_zone.rb
というファイルを作って Rails.config.application.config.time_zone = "Tokyo"
のように書いてたんだけど、どうも効いていない (Time.zone
が UTC のまま)。
コードを追ってみると、activesupport/lib/active_suport/railtie.rb
の initializer "active_support.initialize_time_zone"
で Time.zone_default
を設定している。
このコードは config/initializers/*
より早い段階で実行されるようなので、それより早い段階で time_zone
を設定する必要がある。
結果 (Rails 4 までのコメント通り) config/application.rb
で設定するのが正解ぽい。
環境
- Rails 5.0.2