状況
-
開発環境でアプリケーションに追加実装 (コメント機能の実装)
-
デプロイ先のHerokuにpush
-
Heroku上アプリでコメントを投稿しようとしたところエラー
環境
-
macOS Catalina 10.15.6
-
ruby 2.6.5
-
Rails 6.0.3.4
-
MySQL : 5.6.47
対処の手順
1. ターミナルでログを確認
Heroku上のアプリを操作した際は、ターミナルでコマンドを打つとログを確認できます。
% heroku logs --tail --app アプリ名
# --tailは最後の10行を表示するオプション
実行後、エラー箇所を抜粋したのがこちら。
続いてエラー箇所を深ぼっていきます。
2. エラーを読み解く
先程の画像にエラーの理由が書かれています。
-
Completed 500 Internal Server Error
-
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'heroku_***.comments' doesn't exist):
1ではエラーがサーバーサイドのエラーであることを示しています。
この'500'は「HTTPステータスコード」と呼ばれ、HTTP通信でのレスポンスの意味を表現します。
一部を紹介すると…
-
200 : 正常なレスポンス
-
302 : リダイレクトを実行
-
404 : 存在しないURLへのリクエスト
2が今回のエラーを解決するためのヒントです。
-
ActiveRecord::StatementInvalid : Active Recordを使用した際に起きるエラー
-
Table '*** .comments' doesn't exist : commentsテーブルが存在しません
開発環境ではコメント機能は正常に動作し、Heroku上ではコメントを投稿しようとしたときにエラーが出ました。
そしてこのエラー文を見るに、以下のことがエラーの原因として考えられます。
Heroku上でコメントテーブルを作成していない。
では、実際に解消してみましょう。
3. Heroku上のアプリでテーブルを作成
ターミナルで次のコマンドを実行します。
(Control + C でログ画面を抜けた後)
% heroku run rails db:migrate
これで無事にエラーが解消しました!
まとめ
-
Heroku上でエラーに対処するため、ターミナルでログを確認した
-
エラー文を確認し、原因を特定した
-
heroku run rails db:migrateでテーブルを作成した
-
エラーを無事に解決できた
エラーが出ると少なからず焦ります。特に本番環境でのエラーは別格の怖さがあります。
解決できるかと不安になりますが、いつだって大事なのは冷静に状況を整理すること。そして適切な対処を淡々と実行すること。
経験値を増やして、エラー対処職人になれるように積み上げていきます!