tacky4
@tacky4 (Tacky4 .)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

cloud9→herokuのデプロイで、作成した データベース(model)の中身が読み込まれない

解決したいこと

cloud9→herokuのデプロイで、データベースの中身が読み込まれるようにしたい。

状況

Ruby on Railsで写真投稿アプリをつくっています。cloud9での動作確認ではすべて動作していました。

herokuへのデプロイはできているようなのですが、cloud9で既に作成していたデータベース(Userモデル、Postモデル、Imageモデルなど全て)の中身が読み込まれていません。
cloud9ではsqlite3、herokuではpostgresqlを使用しました。

cloud9の開発中に作成した管理者アカウントでログインしようとしてもエラーとなってしまうようです。データベースの中身が読み込まれていないものと思います。

モデルが読み込まれていないページはちゃんと動きます。しかし、モデルが含まれるページは「We're sorry, but something went wrong.」エラーが出てしまいます。
初デプロイで自分の知識では解決できず、解決策をご存じの方がいればどなたか教えていただけないでしょうか?

発生している問題・エラー

Slideモデルを読み込むページ

2021-10-03T06:55:01.154743+00:00 app[web.1]: F, [2021-10-03T06:55:01.154693 #4] FATAL -- : [7db9964e-b30d-4f7a-94f0-3617a9617ad2]
2021-10-03T06:55:01.154790+00:00 app[web.1]: F, [2021-10-03T06:55:01.154760 #4] FATAL -- : [7db9964e-b30d-4f7a-94f0-3617a9617ad2] ActionView::Template::Error (undefined method `title' for nil:NilClass):
2021-10-03T06:55:01.154922+00:00 app[web.1]: F, [2021-10-03T06:55:01.154889 #4] FATAL -- : [7db9964e-b30d-4f7a-94f0-3617a9617ad2]      5:     <div class="a">
2021-10-03T06:55:01.154923+00:00 app[web.1]: [7db9964e-b30d-4f7a-94f0-3617a9617ad2]      6:       <div class="slide slide1">
2021-10-03T06:55:01.154923+00:00 app[web.1]: [7db9964e-b30d-4f7a-94f0-3617a9617ad2]      7:         <div class="slide-wrapper">
2021-10-03T06:55:01.154923+00:00 app[web.1]: [7db9964e-b30d-4f7a-94f0-3617a9617ad2]      8:           <div class="slide-title"><%= Slide.find_by(id:1).title %></div>
2021-10-03T06:55:01.154924+00:00 app[web.1]: [7db9964e-b30d-4f7a-94f0-3617a9617ad2]      9:           <div class="slide-ex"><%= Slide.find_by(id:1).ex %></div>
2021-10-03T06:55:01.154924+00:00 app[web.1]: [7db9964e-b30d-4f7a-94f0-3617a9617ad2]     10:         </div>
2021-10-03T06:55:01.154925+00:00 app[web.1]: [7db9964e-b30d-4f7a-94f0-3617a9617ad2]     11:       </div>
2021-10-03T06:55:01.154959+00:00 app[web.1]: F, [2021-10-03T06:55:01.154934 #4] FATAL -- : [7db9964e-b30d-4f7a-94f0-3617a9617ad2]
2021-10-03T06:55:01.154996+00:00 app[web.1]: F, [2021-10-03T06:55:01.154971 #4] FATAL -- : [7db9964e-b30d-4f7a-94f0-3617a9617ad2] app/views/home/top.html.erb:8:in `_app_views_home_top_html_erb___777749997498230952_47127486861940'

Textモデルを読み込むページ

2021-10-03T06:56:20.939671+00:00 app[web.1]: F, [2021-10-03T06:56:20.939616 #4] FATAL -- : [85f79bce-8f44-4049-8c77-f11299002726]
2021-10-03T06:56:20.939718+00:00 app[web.1]: F, [2021-10-03T06:56:20.939690 #4] FATAL -- : [85f79bce-8f44-4049-8c77-f11299002726] ActionView::Template::Error (undefined method `text' for nil:NilClass):
2021-10-03T06:56:20.939861+00:00 app[web.1]: F, [2021-10-03T06:56:20.939815 #4] FATAL -- : [85f79bce-8f44-4049-8c77-f11299002726]      8:   </div>
2021-10-03T06:56:20.939861+00:00 app[web.1]: [85f79bce-8f44-4049-8c77-f11299002726]      9:
2021-10-03T06:56:20.939862+00:00 app[web.1]: [85f79bce-8f44-4049-8c77-f11299002726]     10:   <div class="terms_form">
2021-10-03T06:56:20.939862+00:00 app[web.1]: [85f79bce-8f44-4049-8c77-f11299002726]     11:     <p><%= @terms.text %></p>
2021-10-03T06:56:20.939862+00:00 app[web.1]: [85f79bce-8f44-4049-8c77-f11299002726]     12:   </div>
2021-10-03T06:56:20.939863+00:00 app[web.1]: [85f79bce-8f44-4049-8c77-f11299002726]     13:
2021-10-03T06:56:20.939863+00:00 app[web.1]: [85f79bce-8f44-4049-8c77-f11299002726]     14:
2021-10-03T06:56:20.939903+00:00 app[web.1]: F, [2021-10-03T06:56:20.939877 #4] FATAL -- : [85f79bce-8f44-4049-8c77-f11299002726]
2021-10-03T06:56:20.939954+00:00 app[web.1]: F, [2021-10-03T06:56:20.939914 #4] FATAL -- : [85f79bce-8f44-4049-8c77-f11299002726] app/views/home/terms.html.erb:11:in `_app_views_home_terms_html_erb___4494980895148083071_69880127531620'

推測したこと

cloud9内で作成した既存のデータベースの中身はそもそもアップロードされないのでしょうか。
言い換えるならば、cloud9で作成したデータの中身(hogehoge@gmail.comなど具体的なもの)を一旦削除した後、herokuアプリにログインして、herokuアプリ内からデータの中身を作っていくということなのでしょうか。

デプロイ時の操作

environmentやdatabase.yamlの中身を本番環境用に書き換えた後、「git push heroku master」→「heroku run rails db:migrate」を行いました。

0

1Answer

cloud9内で作成した既存のデータベースの中身はそもそもアップロードされないのでしょうか。

cloud9で開発しているときに使用しているデータベースと、Herokuで使用しているデータベースは全くの別物です。
database.ymldevelopproductionのデータベースの設定をしていると思いますが、データベース名も違うと思います。
cloud9で開発しているときは、cloud9の環境で接続しているデータベース、Herokuで開発しているときはHerokuの環境で接続しているデータベースを使用することになります。

つまり、データベースがcloud9とHerokuで異なるので、データの内容も異なります。

で、そもそも今どのようなエラーが発生しているか分かっているでしょうか?:smiley:
記載していらっしゃるエラー詳細にエラー文が出ているので探してみてください!

そして、上記のデータベースの説明も踏まえて原因が分かると最高です。

0Like

Your answer might help someone💌