状況
- 
開発環境でアプリケーションに追加実装 (コメント機能の実装) 
- 
デプロイ先の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でテーブルを作成した 
- 
エラーを無事に解決できた 
エラーが出ると少なからず焦ります。特に本番環境でのエラーは別格の怖さがあります。
解決できるかと不安になりますが、いつだって大事なのは冷静に状況を整理すること。そして適切な対処を淡々と実行すること。
経験値を増やして、エラー対処職人になれるように積み上げていきます!
