LoginSignup
6
1

More than 5 years have passed since last update.

Rails の time_zone の設定は initializers/* には書かない

Last updated at Posted at 2017-05-24

結論

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.rbinitializer "active_support.initialize_time_zone"Time.zone_default を設定している。

このコードは config/initializers/* より早い段階で実行されるようなので、それより早い段階で time_zone を設定する必要がある。

結果 (Rails 4 までのコメント通り) config/application.rb で設定するのが正解ぽい。

環境

  • Rails 5.0.2
6
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
1