本番だけUTCになる問題の対応 | Rails

Web技術メモ

はじめに

現在開発している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

タイトルとURLをコピーしました