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 1 year has passed since last update.

ChatGPTを使ってherokuにデプロイした時に起きたエラーを解決していく

Posted at

Ruby on rails を学習中の方の参考にしてもらえたら嬉しいです。
アプリケーションを作成している時に出てくるエラーとその解決方法について掲載します。少しでも参考にしていただけると幸いです。
今回はアプリケーションをherokuへデプロイする時に起きたエラーの解決方法をお話しします。
herokuとは?について詳しく知りたい方はサムライエンジニアのこの記事で確認してみてください。

簡単に復習すると、herokuはアプリを実行環境に設置しておくサーバーです。サーバーにデプロイ(アップロード)するときにエラーが多数発生しましたので、その解決方法を共有してみます。

はじめに

herokuにアプリをデプロイして、失敗すると以下の画像のようにエラー画面が出ます
スクリーンショット 2023-06-16 7.04.57.png

解決方法とすると、このグレーの中のメッセージを解読してエラーの原因を修正していくことになります。
しかし、このエラーを見つけるための手間がとてもかかります。
その作業をChatGPTに見つけてもらうというのが今回の修正方法です。

こんな感じに修正します↓

最初のエラーはこちら

スクリーンショット 2023-06-16 7.04.24.png
このようにグレーの中の下から半分くらいのメッセージをコミぺしてChatGPTに読み込ませます。
今回のエラーが何を出していたか探ります。
スクリーンショット 2023-06-16 7.05.30.png
今回のエラーの中では画像の回答の通り、足りないものを追加して、最初のエラーを修正していきます。
コマンドにbundle lock --add-platform X86_64-linuxを入力して指示通りに修正していきます。

次のエラーを修正します

先ほどのコマンドを入力して、GitHubを更新してherokuが最新の更新を読み込む状態にします。(これはいつもの作業で行なっているSourceTreeからのプッシュ、コミット、マージ、プルを行なっています)

そして、アプリを再びデプロイします。
すると次のエラーメッセージが出てきます↓
スクリーンショット 2023-06-17 21.49.39.png
herokuがというか、Rubyって本当に優秀だと思います。その理由はプログラムを構成しているフレームワークや、ファイル、gemなどのバージョンが正しくなかったり、依存関係が構築されないとエラーを出してくれるので、どこで何が間違っているかが判明します。
では上記の画像のエラーも修正していきます。
スクリーンショット 2023-06-17 21.49.49.png

上記画像のように初歩的なエラーもちゃんと注意してくれます。GemfileにあってGemfileLockにはないということからbundle instalをコマンで実行するようにメッセージが出ています。

これを行なって、再びherokuが最新版のアプリを読み込むようにGitHubを更新します。
スクリーンショット 2023-06-17 21.50.29.png

次のエラーを修正します

すると上記のような画像のエラーメッセージがまた、出ましたので、同じように解決していきます↓
スクリーンショット 2023-06-17 21.50.39.png
上記画像の中段あたりに。つまり、“config.load_defaults 6.0°に変更すると良いでしょう。という文があります。これの修正を行います。
今回のアプリの場合、下の画像のようにマイグレーションファイルの3行目ActiveRecord: :Migration [6.0]の[6.0]が[7.0]になっていたので、[6.0]に直しました。
スクリーンショット 2023-06-17 21.53.10.png
他のマイグレーションファイルも同じ状況になっていないかチェックして、[6.0]に戻します。
この原因はおそらく、コマンド入力でバージョンを更新してしまった際に[7.0]になってしまったのだと思います。RubyやRailsのバージョンと互換性がなかったのが原因かと思われます。
それでは更新して、デプロイします。

また、エラーです

スクリーンショット 2023-06-17 21.51.00.png
この上記のエラーは何なのか質問します

すると以下のように返答が返ってきます。
スクリーンショット 2023-06-17 21.51.10.png
回答の最後の方を確認します。

φ(・・) メモ
ユーザーモデルはある。でもエラーが出ているので、その点を質問します↓
同じように、Userモデルが存在するかどうか確認してみてください。もし存在しなければ、作成する必要があります。また、User・モデルが存在する場合、その名前が正しいか (大文字と小文字を含む)確認してみてください。

スクリーンショット 2023-06-17 21.51.34.png
はい!エラーを起こしていた原因が分かりました。ユーザーモデルの中に以下の画像のように
has_many informations, dependent: :destroyという存在しないモデルを定義していました。このモデルがユーザーモデルと関連しているようにコードを書いていましたので、コメントアウトしました。(14行目)
スクリーンショット 2023-06-17 21.54.09.png

GitHubを更新してデプロイ。。。。エラー!!!

次のエラーを修正します

スクリーンショット 2023-06-17 21.51.48.png
こんなエラーが出ています。しかし、エラーの原因は表示されていないようですが、しっかりコピペしてあるので、ChatGPTがエラーの原因を見つけ出してくれているはずです。
スクリーンショット 2023-06-17 21.51.56.png
はい。エラーの原因が見つかりました。
どうやら、ApplicationRecordに誤りがあるようです。
ここはちょっとズルをして、過去に作ったアプリのコードを確認します。すると以下のように記述してあることが判明します。
スクリーンショット 2023-06-17 21.53.19.png
上記のように書くところを以下のように書いていました。
スクリーンショット 2023-06-17 21.53.30.png
それで、意味が分からないままでは次にエラーと遭遇しても解決できないと思ったので、どんな意味を持つコードなのかChatGPTに聞いてみました。
スクリーンショット 2023-06-17 21.52.04.png
上記のように
self.abstract.class= trueは、ApplicationRecordのインスタンスを作成しないようにRailsに指示します。つまり、このクラス自体がデータベースのテーブルと直接対応しないことを意味します。とあるので、このself.abstract.class= trueという一文は正しく動作させるための定型文(おまじない)みたいなものだと判断し、次に進ことにしました。
そして、GitHubを更新してherokuにデプロイ!!
すると、以下のようにデプロイができました🎊↓
スクリーンショット 2023-06-17 21.47.48.png
上記の画像をよく見るとApplication errorと書いてあります。
デイトラの教材だと、このあとアプリケーションのシークレットキーやAmazon S3との連携をさせるとアプリケーションが問題なく表示されるようになります。
取り急ぎherokuへのデプロイをした時に起きたエラーメッセージを修正してみました。

最後に

このように、herokuのエラーメッセージはどこにエラーの原因が書かれているか分かりずらいです。
しかし、ChatGPTに大事そうな部分を読み込ませると解決手段を提案してくれます。
koregaChatGPT3.5でも可能かどうかは分かりませんが、4.0だとこのように解決できます。
Twitterでも開発の様子をコンパクトに垂れ流しているので、よろしければ覗きにきてください😃

いかがでしたでしょうか?
他にも記事を発信していきますので、私の QiitaやTwitterをフォローしていただけると嬉しいです。
個別の質問もぜひ歓迎します。
私自身、初学者ではありますが、1歩先を行くものとして回答できたらと思います。
それでは。

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?