8
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Railsアプリのタイムゾーンを日本時間に統一する

Posted at

考慮すべきタイムゾーンは以下の4つ

  • Rubyプロセス
    • Time.now等に影響
  • config.time_zone
    • Time.zone.now等に影響
  • config.active_record.default_timezone
    • DBから受け取った時刻をどのタイムゾーンとして解釈するか
  • DB
    • SQL文のNOW()等に影響

Rubyプロセス

開発環境(Docker)

DockerfileENV TZ Asia/Tokyoを追加して対応

本番環境

環境変数にTZ = Asia/Tokyoをセットして対応

config.time_zone

共通

config/application.rb
config.time_zone = 'Tokyo'

config.active_record.default_timezone

共通

config/application.rb
config.active_record.default_timezone = :local

DB

開発環境、本番環境それぞれのDBに接続し、以下のクエリを実行

ALTER DATABASE db_name SET timezone TO 'Asia/Tokyo';

Postgresの場合の書き方なので、DBの種類によっては書き方が違うかも。
DBに再接続すると反映されています。
rails:db:migrateを実行するとタイムゾーンも元に戻ってしまいますが、そもそもRailsでSQL文を書くことも少ないのでまあ良いでしょう。
docker-compose.ymlに環境変数を設定する方法もあるみたいですが、うまくいきませんでした。

参考

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?