Rails+EC2+RDSをJSTにする
はじめましてこんにちは!
コラビットのソネ(@_kok____)です。
コラビットでは最近、テック系の社内共有会(LT)をはじめました。
各々の守備範囲で知識が遮られてしまっているのが勿体なく感じたからです。
このLTの内容で、社外公開できそうなものは今回のようにテックブログとして発信していく予定です!
それではさっそく今回の内容に入ります。
Rails+EC2+RDSをJSTにする
Railsはとても便利なフレームワークなので、time_zoneを設定してあげればアプリケーション上は問題なくJSTで動いてくれます。
ただ、それだけだとDBのDATETIME型などの値がUTCで入ります。
この9時間ずれは、DATE型の使い方によってはバグになったり、DBから直接集計する時に面倒だったりするので、アプリケーションによってはすべてJSTにする方がいいです。
Railsの設定
config/application.rbに以下を追加します。
[ruby title=”config/application.rb”]
config.time_zone = ‘Tokyo’
config.active_record.default_timezone = :local
[/ruby]
EC2の設定
localtimeをJSTにしてcronを再起動します。
[bash]
$ sudo cp -p /usr/share/zoneinfo/Japan /etc/localtime
$ sudo vim /etc/sysconfig/clock
$ cat /etc/sysconfig/clock
ZONE=”Asia/Tokyo”
UTC=false
$ sudo service crond restart
[/bash]
RDSの設定
AWSのコンソールからタイムゾーンをJSTに変更します。
https://aws.amazon.com/jp/premiumsupport/knowledge-center/rds-change-time-zone/
SELECT NOW();してJSTになっていればOKです。
以上で完了です!
created_atなどがJSTでインサートされているか、DBを直接確認してみてください。
注意点!
EC2について、下記2点注意が必要です。
- 上記/etc/sysconfig/clockの設定を入れないと、yum updateなどでglibcが更新されたときにUTCに戻る
- JSTにした後、crondを再起動しないとcronだけUTCのまま動く
最後に
コラビットは現在エンジニアを募集しています!
- webサービスを作りたい!
- AIを作りたい、学びたい!
- 未経験だけどモノづくりが大好き!プログラミングを仕事にしたい!
な方は当HPからぜひお問い合わせください!
お待ちしています。