0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

デプロイ後、トップページは表示できるのにユーザー登録画面に行けない

Posted at

環境

Ruby 2.6.5
RailsRails 6.0.3.6

状況

ユーザー登録機能をdeviseで実装したオリジナルアプリを、Herokuにてデプロイ。
アクセスすると、トップページは表示されますが、トップページから「新規登録」や「ログイン」をクリックすると、エラーが出るという状況です。
image.png

結論

Heroku上でのマイグレーションがうまくいっていないことが原因でした。

解決までの過程

① heroku logs --tail --app <<アプリケーション名>> でログを確認

Image from Gyazo

ログの最下部にstatus=500とあります。500番台は、サーバーがブラウザからのリクエストの処理に失敗した状態です。
調べてみると、DBに関わる場合が多いとわかり、heroku run rails db:migrateでもう一度マイグレーションを試みます。

② マイグレーション中のログ内にエラーを確認

Image from Gyazo

「No such column: posts.genre」
postsテーブルにgenreというカラムが存在しないことにより、

「all later migrations canceled:」
マイグレーションがキャンセルされた

ということがわかりました。

③ 問題解決のための仮定
postsテーブルを確認すると、genreカラムではなくgenre_idカラムが存在していました。
初めはgenreカラムを作成しましたが、設計を変更し、genre_idカラムに書き換えました。
そのためのファイルが以下です。
Image from Gyazo

このファイルがある状態でHerokuにマイグレーションを行おうとすると、genreカラムの存在が確認できず、エラーが出ると考えました。

④ 仮定の検証
genreカラムをgenre_idカラムに変更したファイルを削除し、再度heroku run rails db:migrateを実行しました。

⑤ 問題の解決
マイグレーションが完了し、アプリも正常に作動しました。

まとめと疑問点

エラーは、ログからエラー内容の確認、原因の特定、修正の流れが大切だと再認識しました。

ただ今回の場合、そもそも「新規登録」や「ログイン」のボタンをクリックしても情報入力ページに行くだけなので、DBはまだ関係ないのではと疑問が残りました。
情報入力後、「登録する」や「ログインする」のボタンをクリックするとエラーになるのなら納得できるのですが・・・
この点も含め、より理解が深まるよう、今後も学習を継続したいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?