質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

1回答

1442閲覧

RailsからDB保存すると時間が9時間前になってしまう

kozica

総合スコア58

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2018/08/03 03:28

編集2018/08/03 05:25

RailsからDBにデータを保存すると
created_at,updated_at
が自動的に作成時間を書き込むのですが、その時間が9時間前になってしまします。
mysqlのtime_zoneは下記のようになっています

mysql

1mysql> show variables like '%time_zone%'; 2+------------------+--------+ 3| Variable_name | Value | 4+------------------+--------+ 5| system_time_zone | JST | 6| time_zone | SYSTEM | 7+------------------+--------+

rails側の設定は下記のようになってます

$ rails c Loading development environment (Rails 5.2.0) irb(main):001:0> Time.now => 2018-08-03 11:53:09 +0900 ←#入力時の時刻通り irb(main):002:0> Time.zone.now => Fri, 03 Aug 2018 11:53:24 JST +09:00  ←#入力時の時刻通り irb(main):003:0> Time.zone => #<ActiveSupport::TimeZone:0x00007f8ba2f39050 @name="Tokyo", @utc_offset=nil, @tzinfo=#<TZInfo::DataTimezone: Asia/Tokyo>>

Tokyoに設定されるしrailsは問題なさそう、、、
じゃあサーバー側かなと思い調べてたところ

$ date 2018年 8月 3日 金曜日 11:57:02 JST  ←#入力時の時刻通り

ちゃんと今の日付になってる、、、

何が問題なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

アプリサーバとDBサーバが同じだと外してると思いますが、

じゃあサーバー側かなと思い調べてたところ

アプリサーバー(のタイムゾーンが)JSTじゃなかったり、とかしないですかね?

投稿2018/08/03 03:59

編集2018/08/03 06:09
sysjojo

総合スコア325

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kozica

2018/08/03 04:16

アプリサーバーというと、pumaであってますか? config/puma.rb見ても、time_zoneのような設定するところはないのですが、追記したらいいですかね?
kozica

2018/08/03 04:45

mysqlとrailsサーバーは同じです。 amazon linuxにsshでログインしてその環境で作成しています。 上記URLを見たところ、parseしてそのデータをDBに保存しているので、require 'time'と記述してから実行しても変わらなかったです、、、
kozica

2018/08/03 05:21

試しにrailsを絡めずにmysql単体でテーブルを作成して時間を見てみました mysql> create table sample ( -> id int, -> date text, -> created_at timestamp not null default current_timestamp); 上記テーブルを作成し、dataにinsertしてみるとcreated_atカラムにはちゃんと今の時刻が自動的に入力されておりました。 この結果からも、mysqlには問題ないような気がします。 railsも問題なさそうなのでAmazon linuxの設定を見てみます
kozica

2018/08/04 00:37 編集

$ echo $TZ  としたところ空だったので $ export TZ = "Asia/Tokyo" $ echo $TZ Asia/Tkyo と実行してから bundle exec rails s とrailsを起動してjsonを取得してDBに保存しましたが、時刻は9時間前のままでした。 他のアプローチが思い浮かばないのですが、何かまだ調べることはございますでしょうか?
kozica

2018/08/04 00:54 編集

おそらく原因わかりました pumaです railsシャットダウン時の時刻みたらこいつが9時間前になってました なぜ気づかなかったんだ、、、、 - Gracefully stopping, waiting for requests to finish === puma shutdown: 2018-08-04 00:44:27 +0000 === - Goodbye! Exiting なので、pumaの時刻変更する仕方を調べてみます
kozica

2018/08/04 03:48

pumaの時刻変更の仕方を知っていましたら、記載して頂けると嬉しいです。
kozica

2018/08/04 05:12

pumaを現時刻に修正してもDB保存時の時間は9時間前のままでした。 もうわからないので、新たにcreatedカラムを作成したところいけました。 migrate時に作成されたカラムだったのでもしかしたらそこに原因が合ったのかも知れないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問