LoginSignup
2
2

Renderでのデプロイが失敗した時の確認

Posted at

Renderでログインや新規登録アイテム投稿などのページに遷移できないエラーが発生した時

ログイン画面に遷移するボタンをクリックした際に以下のような画面になる。

861e024473e055de04e373ac62de6f80.png

We're sorry, but something went wrong.
If you are the application owner check the logs for more information.

今回発生したエラーの経緯

勉強のためフリマサイトのクローンを作成している際に発生。トップページのデプロイ時は問題なく、表示ができている状態。

確認するべきこと

  1. Render.comのダッシュボードのLogsを開いてLogを確認する
  2. Searchの検索機能で「error」または「 rake aborted!」と入力してエラーの原因となる個所を探る
  3. errorの記述周辺にエラー原因の記述があった

エラーの原因

I, [2023-06-10T22:17:15.399052 #70] INFO -- : [340111ec-77b1-4007-b942-9e601bb7280f] Completed 500 Internal Server Error in 74ms (ActiveRecord: 35.5ms | Allocations: 6576)

[340111ec-77b1-4007-b942-9e601bb7280f] ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "users" does not exist

LINE 8: WHERE a.attrelid = '"users"'::regclass




今回はusersテーブルが存在しないため、それに関するページに遷移した時に発生していた模様。テーブルの設定ができていなかったようなのでVScodeの記述を確認した。

bin/render-build.sh
#!/usr/bin/env bash
# exit on error
set -o errexit

bundle install
bundle exec rake assets:precompile
bundle exec rake assets:clean

となっていてデータベースをmigrateするための記述が抜けていることが分かった。

bin/render-build.sh
#!/usr/bin/env bash
# exit on error
set -o errexit

bundle install
bundle exec rake assets:precompile
bundle exec rake assets:clean
bundle exec rake db:migrate  #この記述を追加

上記のように編集したのちGitHubにコミット、プッシュしてデプロイ完了後確認すると問題なく表示ができるようになった。

ちなみに、Renderで作成したデータベースをリセットしたいときは以下の通り行う。

Renderで作成したデータベースをリセットする方法

bin/render-build.sh
#!/usr/bin/env bash
# exit on error
set -o errexit

bundle install
bundle exec rake assets:precompile
bundle exec rake assets:clean
# bundle exec rake db:migrate   ←コメントアウト
DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:migrate:reset  #追記

DISABLE_DATABASE_ENVIRONMENT_CHECK=1が、本番環境のデータベースを削除するために必要な設定。本番用のデータベースには重要なデータが含まれるため、通常は削除できないようになってる。

今回はリセットを行いため、明示的に削除を許可する設定を記述。

bundle exec rake db:migrate:resetでデータベースをリセットする。以下の3つを順に実行したのと同じ動作をします。

rake db:drop(データベースの削除)
rake db:create(データベースの作成)
rake db:migrate(マイグレーションファイルの実行)

まとめ

  • エラーが発生した時はLogを見る
  • エラー発生個所がわからない場合はサーチ窓に「error」「rake abbord!」を入力してみる。
  • bin/render-build.shファイルの記述はRenderにて実行するコマンドを入力しておくファイル
  • db:migrateの記述がないとデータベースが本番環境にてmigrateされない

初歩的なところで躓いてしまったが、今回のエラーでrender.build.shファイルの役割が勉強できてよかった。

2
2
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
2
2