今何時、そうねだいたいね(JST/UTC+0900)
さて、Railsアプリのデータベースをcronでもって定期バックアップをすることにしまして、それはそれで別記事にまとめますが、cronが実行するRailsTaskで書き出されたアーカイブデータのファイル名がUTCになってしょうがなかったので、ちょっと悩みました。
hoge = Time.now.strftime("%Y%m%d%H%M%S")
p hoge
>20210805050205
こんなの早朝じゃん。5時じゃん。寝てるじゃん。
というわけで、Dockerfileやdocker-compose.ymlのタイムゾーン設定を見直したり、cronを再起動したり。
コンテナの中でdateしてもちゃんとJSTが表示されるのでしばし混乱タイム。
Time.currentに変えてみたらあっさり解決した
解決
fuga = Time.current.strftime("%Y%m%d%H%M%S")
p fuga
>20210805160205
これやこれや。わいはこれを求めてたんや
【Rails】Time.currentとTime.nowの違い – Qiita
Time.currentを使う場合、普通のTimeクラスではなくTimeWithZone(Railsが用意したClass)が使われるそうな。
つまり、Time.nowで参照される環境変数TZが渡せていなかったってことなんですかね。
とりあえず解決🏆