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

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

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

## はじめに
herokuにアプリをデプロイして、失敗すると以下の画像のようにエラー画面が出ます
![スクリーンショット 2023-06-16 7.04.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/b819ff30-c8bf-7339-be0f-05dd2f280ce7.png)

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

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

## 最初のエラーはこちら
![スクリーンショット 2023-06-16 7.04.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/526a88cb-6433-b43c-9d05-4f691571b534.png)
このようにグレーの中の下から半分くらいのメッセージをコミぺしてChatGPTに読み込ませます。
今回のエラーが何を出していたか探ります。
![スクリーンショット 2023-06-16 7.05.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/0dd00646-c758-ef60-b27d-152684509b81.png)
今回のエラーの中では画像の回答の通り、足りないものを追加して、最初のエラーを修正していきます。
コマンドに`bundle lock --add-platform X86_64-linux`を入力して指示通りに修正していきます。

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

**そして、アプリを再びデプロイします。**
すると次のエラーメッセージが出てきます↓
![スクリーンショット 2023-06-17 21.49.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/7c0969ab-a5bd-6f6c-992e-147ff3065626.png)
herokuがというか、Rubyって本当に優秀だと思います。その理由はプログラムを構成しているフレームワークや、ファイル、gemなどのバージョンが正しくなかったり、依存関係が構築されないとエラーを出してくれるので、どこで何が間違っているかが判明します。
では上記の画像のエラーも修正していきます。
![スクリーンショット 2023-06-17 21.49.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/943fa341-7270-bda4-3390-f8e1ae0bdb35.png)

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


これを行なって、再びherokuが最新版のアプリを読み込むようにGitHubを更新します。
![スクリーンショット 2023-06-17 21.50.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/1ac9c1a1-eece-35fe-ea9d-3e8a2c14725c.png)

## 次のエラーを修正します
すると上記のような画像のエラーメッセージがまた、出ましたので、同じように解決していきます↓
![スクリーンショット 2023-06-17 21.50.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/0d81ffaf-ede3-fe39-1b2c-9ffa302063f3.png)
上記画像の中段あたりに`。つまり、“config.load_defaults 6.0°に変更すると良いでしょう。`という文があります。これの修正を行います。
今回のアプリの場合、下の画像のようにマイグレーションファイルの3行目`ActiveRecord: :Migration [6.0]`の[6.0]が[7.0]になっていたので、[6.0]に直しました。
![スクリーンショット 2023-06-17 21.53.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/9071a909-5f00-00bd-f338-8210433d9579.png)
他のマイグレーションファイルも同じ状況になっていないかチェックして、[6.0]に戻します。
この原因はおそらく、コマンド入力でバージョンを更新してしまった際に[7.0]になってしまったのだと思います。RubyやRailsのバージョンと互換性がなかったのが原因かと思われます。
それでは更新して、デプロイします。


## また、エラーです
![スクリーンショット 2023-06-17 21.51.00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/e1d9671a-aea8-c49a-bb86-20d74350539c.png)
この上記のエラーは何なのか質問します

すると以下のように返答が返ってきます。
![スクリーンショット 2023-06-17 21.51.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/27cc99c8-f7e2-be8f-06a4-081a7c15cd33.png)
回答の最後の方を確認します。

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

:::

![スクリーンショット 2023-06-17 21.51.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/314d73d1-6c3f-7e90-9d7a-7de7b7a3c779.png)
はい！エラーを起こしていた原因が分かりました。ユーザーモデルの中に以下の画像のように
`has_many informations, dependent: :destroy`という存在しないモデルを定義していました。このモデルがユーザーモデルと関連しているようにコードを書いていましたので、コメントアウトしました。（14行目）
![スクリーンショット 2023-06-17 21.54.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/00dd99c9-3f69-98d7-3ede-8cb8b836bce0.png)


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

## 次のエラーを修正します
![スクリーンショット 2023-06-17 21.51.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/11529c56-a4a0-79ce-5ceb-bdd181121cfe.png)
こんなエラーが出ています。しかし、エラーの原因は表示されていないようですが、しっかりコピペしてあるので、ChatGPTがエラーの原因を見つけ出してくれているはずです。
![スクリーンショット 2023-06-17 21.51.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/23d3b8ed-8f7d-35bd-6ba2-a58dc7f30a2b.png)
はい。エラーの原因が見つかりました。
どうやら、`ApplicationRecord`に誤りがあるようです。
ここはちょっとズルをして、過去に作ったアプリのコードを確認します。すると以下のように記述してあることが判明します。
![スクリーンショット 2023-06-17 21.53.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/7c05cd3a-0a43-e4c4-806e-8030f14b2b98.png)
上記のように書くところを以下のように書いていました。
![スクリーンショット 2023-06-17 21.53.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/fb6d12ae-5f25-029d-e7c3-4be9a7a70ee2.png)
それで、意味が分からないままでは次にエラーと遭遇しても解決できないと思ったので、どんな意味を持つコードなのかChatGPTに聞いてみました。
![スクリーンショット 2023-06-17 21.52.04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/1937f90e-de0d-46f0-afc0-cf57089be28c.png)
上記のように
`self.abstract.class= trueは、ApplicationRecordのインスタンスを作成しないようにRailsに指示します。つまり、このクラス自体がデータベースのテーブルと直接対応しないことを意味します。`とあるので、このself.abstract.class= trueという一文は正しく動作させるための定型文（おまじない）みたいなものだと判断し、次に進ことにしました。
**そして、GitHubを更新してherokuにデプロイ！！**
すると、以下のようにデプロイができました🎊↓
![スクリーンショット 2023-06-17 21.47.48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3356902/13920cc1-b2bf-433d-c597-0be837cd3c9f.png)
上記の画像をよく見ると**Application error**と書いてあります。
デイトラの教材だと、このあとアプリケーションのシークレットキーやAmazon S3との連携をさせるとアプリケーションが問題なく表示されるようになります。
取り急ぎherokuへのデプロイをした時に起きたエラーメッセージを修正してみました。

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

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">一昨日から粘っていたherokuへのデプロイの時のエラーが解決しました🎊<br><br>とはいえ、ChatGPTに聞いて何回も手直ししてました。<br><br>そのプロセスをまとめます↓<br>まずはこんなエラーでした。<br>GemfileLockを直せと言われて、直し...<br>【続く】<a href="https://twitter.com/hashtag/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0?src=hash&amp;ref_src=twsrc%5Etfw">#プログラミング</a> <a href="https://twitter.com/hashtag/%E6%9C%9D%E6%B4%BB?src=hash&amp;ref_src=twsrc%5Etfw">#朝活</a> <a href="https://t.co/WBUq4vWOGf">pic.twitter.com/WBUq4vWOGf</a></p>&mdash; クレイフィールド/Webエンジニアの🥚/リベシティ民 (@clayfild4works) <a href="https://twitter.com/clayfild4works/status/1670167619599732736?ref_src=twsrc%5Etfw">June 17, 2023</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>


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