投稿者:Sone

Tech

Rails+EC2+RDSをJSTにする

blog-details

はじめましてこんにちは!

コラビットのソネです。

 

コラビットでは最近、テック系の社内共有会(LT)をはじめました。

各々の守備範囲で知識が遮られてしまっているのが勿体なく感じたからです。

 

このLTの内容で、社外公開できそうなものは今回のようにテックブログとして発信していく予定です!

それではさっそく今回の内容に入ります。

 

Rails+EC2+RDSをJSTにする

Railsはとても便利なフレームワークなので、time_zoneを設定してあげればアプリケーション上は問題なくJSTで動いてくれます。

ただ、それだけだとDBのDATETIME型などの値がUTCで入ります。

この9時間ずれは、DATE型の使い方によってはバグになったり、DBから直接集計する時に面倒だったりするので、アプリケーションによってはすべてJSTにする方がいいです。

 

Railsの設定

config/application.rbに以下を追加します。

config.time_zone = ‘Tokyo'
config.active_record.default_timezone = :local

 

EC2の設定

localtimeをJSTにしてcronを再起動します。

$ 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

 

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からぜひお問い合わせください!

詳細はコチラ!

お待ちしています。