webで調べたりして、現在私の環境では以下の状況です。
railsは5を使っています。
CentOS7.4上のrails production環境でこのようになっております。
$ timedatectl status Local time: Wed 2018-03-07 01:37:24 JST Universal time: Tue 2018-03-06 16:37:24 UTC RTC time: Tue 2018-03-06 16:37:23 Time zone: Asia/Tokyo (JST, +0900) NTP enabled: yes NTP synchronized: yes RTC in local TZ: no DST active: n/a
mysql> SHOW VARIABLES LIKE '%time_zone%'; +------------------+------------+ | Variable_name | Value | +------------------+------------+ | system_time_zone | JST | | time_zone | Asia/Tokyo | +------------------+------------+ 2 rows in set (0.00 sec)
config/application.rb
config/environments/
の中身のそれぞれdevelopment.rb
とproduction.rb
の中身には、タイムゾーンの設定はしておらず、application.rb
の中だけで以下のように設定してある状態です。
class Application < Rails::Application config.load_defaults 5.1 config.generators.template_engine = :slim config.time_zone = 'Tokyo' config.active_record.default_timezone = :local end
またproductionでの、rals c
内での実行結果として以下のようにconfig/application.rb
での設定が反映されています。
irb(main):003:0> Time.zone => #<ActiveSupport::TimeZone:0x000055e48c0a34a0 @name="Tokyo", @utc_offset=nil, @tzinfo=#<TZInfo::DataTimezone: Asia/Tokyo>>
macでも、以下のように期待通りに動いております。
[1] pry(main)> Time.zone => #<ActiveSupport::TimeZone:0x007fac81494500 @name="Tokyo", @tzinfo=#<TZInfo::DataTimezone: Asia/Tokyo>, @utc_offset=nil>
上記のlinuxコマンドで見える時間(Local time: Wed 2018-03-07 01:37:24 JST
)と比べると、
production
にてrails c
でModelName.create(省略)によって
レコードを登録するとそのレコードの生成時刻はcreated_at: "2018-03-06 16:39:50"
となり、ずれてしまっております。
また、開発環境(Mac, rails development)では登録されるレコードの時刻は正しいです。
原因が少しでもわかる方、ご教授お願いいたします。