Heloku de デプロイでのエラーについて
いつも今日のエラーというタイトルだけど、すごい抽象的なので、見返したときに分かるように工夫していこう!
ということで、今日のタイトルになりました!
デプロイ
デプロイとは、簡単に言うと、ネットワークを通してWEBアプリケーションを公開して使えるようにすること
今週のエラー祭りアプリケーションはHelokuというサーバーサービスを利用してデプロイをする
Herokuにデプロイする際には、Gitの仕組みを使用し,
Gitで管理しているリポジトリをHerokuへ反映することで、Heroku上で該当するアプリケーションの操作が可能になる
今日のエラー
今日発生したエラーの経緯
Helokuにデプロイし、挙動確認をしてもらい、GitHubでLGTMしてもらうまでのながれ。
エラーその1
Helokuにデプロイ後に、公開したwebアプリケーションのURLを入力したときに起きた。
新しいタイプのやつやん。
カリキュラムに沿って確認する。
こういうときはログを表示させて確認するらしい。
ターミナル
heroku logs --tail --app <<アプリケーション名>>
そうすると
むむむ?
中に、
ActionView::Template::Error (Mysql2::Error: Table 'heroku_56490630b88570d.prototypes' doesn't exist):
と書いてある。
なるほど、MysqlってことはDB関係かな!
ここで、大野はHeloku上でマイグレーションをしていなかったことに気づく。
heroku run rails db:migrate
※Helokuでマイグレーションをするときは、「heroku run」を忘れずに!
この後、無事にアクセスできました!
エラーその2
挙動を確認してもらい、エラーを指摘していただいた。
内容は、コメント投稿機能で空のコメントでは保存されない。
→現在、入力欄が空の状態で投稿ボタンを押すとエラー画面に遷移
→自分で投稿したプロトタイプの詳細ページにて発生しております。他ユーザーはLGTM
つまり、自分が投稿した内容に空でコメントするとエラーになるが、他の人が投稿した内容に空でコメントするとrenderが適用されているということ
仮説
1.commentsコントローラーでのアクションが定義できていない
2.ログイン時のみのエラーなので、html.erbファイルでの記述ミスor抜けがある
1の仮説から検証
多分大丈夫!
2の仮説検証
<% if user_signed_in? && current_user.id == @prototype.user_id %>
<div class="prototype__manage">
<%= link_to "編集する", edit_prototype_path, class: :prototype__btn %>
<%= link_to "削除する", prototype_path(@prototype.id), method: :delete, class: :prototype__btn %>
</div>
ん?
むむむ?
詳細ページに行くところで(@prototype.id)が抜けている!
なるほど!
ログイン時の記述がミスってるから、他ユーザーのコメントが空なのは大丈夫だったのか!
でもなんでこんなミスをしたのだろうか。
思いつくのは、昨日のエラー
おそらく、ユーザーの情報を観るためのページに遷移するときに、消しちゃったのかな?
無事解決できてよかった!
Discussion