はじめに
現在開発しているWebアプリのメモです。
本番を触ったところ、UTCになっていましたので原因と対策を書きます。
前提として、application.rb に config.time_zone = ‘Asia/Tokyo’ を設定済み(ローカルでは問題なし)。
問題
ローカルではJST表示なのに、本番ではUTC扱いになってしまう。
原因
日付・時刻の取得で Date.today / Time.now を使っていたため。
これらは OSのタイムゾーン依存 のため、本番(UTC)でズレが出る。
対策
Date.today を使わず、Date.current もしくは Time.zone.today を使う。
# ❌NG
posted_on = Date.today
now = Time.now
# ✅OK
posted_on = Date.current
now = Time.current
RuboCopにルールを追加(再発防止)
Rubocopにルールを追加すると安全に開発できます。
Rails/TimeZone:
Enabled: true
Style/DateTime:
Enabled: true