🐈

(自分用メモ)最終課題1 ECサイト 環境構築 Herokuデプロイできない問題②

2023/01/03に公開

<学んだこと>
日頃から空欄スペースには整理ルールを決めておけ!
ymlファイルはスペースまでカウントされる。分かった上でも、初めの上は対応に時間がかかる。

<以下本文>
■現状

課題1環境構築において、Herokuデプロイが正常にできずにいます。

heroku.mdの手順書のもと進めております。

データベースの作成(以下リンク)において、

https://mng-camp.potepan.com/questions/d0e42751-6a94-4064-89d5-470a0f14cd9b

git commit -a -m "Look for env var defined by JAWSDB addon on production"実行後の

git push heroku testbranch:master実行にて以下エラーが起きます。

■実際に出ているエラー

・最下段

remote: ! Precompiling assets failed.

remote: !

remote: ! Push rejected, failed to compile Ruby app.

remote:

remote: ! Push failed

remote: Verifying deploy...

remote:

remote: ! Push rejected to hiro-nagai.

remote:

To https://git.heroku.com/hiro-nagai.git

! [remote rejected] tama -> master (pre-receive hook declined)

error: failed to push some refs to 'https://git.heroku.com/hiro-nagai.git'

エラー文を読み解くと、

database.yml12行目に何かあるのか確認しましたが、検討がつきませんでした。

default: &default

■既に試したこと、参考にしたページ

・インデントで過去事例検索かけました。

こちらの事例がインデント関連で怪しいと思うのですが、エラー文が指すファイルとはくい違うので、いまいち答えを得れない状況にあります。

https://mng-camp.potepan.com/questions/450f2552-e1b2-4231-af5a-da4a22128e40

・検索

■やりたいこと

heroku.mdに記載の通りHerokuデプロイを完遂したい。

■環境

M1チップ

ventura ver13.0

回答
ユーザー画像
メンターHyo

2022/11/28 12:30

エラーでdatabase.ymlと言われているのであればその可能性が高いので、そちらを確認してみてください。

何を確認するのか?となった場合、rails aborted!のあとのエラー文(翻訳したもの)にそれが書いてありますのでこちらも確認してみてください!

ユーザー画像
長井宏樹

2022/11/29 14:19

hyo様

ご回答ありがとうございます。

調べましたところymlはインデントも読み込む為、タブではなくスペースでインデントする、と言うことがわかりました。

その上で、databaseとstorageを確認し、全てスペースで打ちましたが、結果変わらずでした。

https://github.com/potepancamp/Hiro-Nagai/tree/tama

ユーザー画像
masa(メンター)

2022/11/29 15:36

お世話になります。

githubにあがっているdatabase.ymlのファイルを見たのですが、以下のように書かれていますね。

この「−」というのは削除という意味合いで「+」は追記という意味合いになります。これを書く必要はないです。

カリキュラムをそのまま移してきたのだと思いますが、このような不要な記号などを入れるとインデント含めてエラーになります。

自身でもカリキュラムの手順をよく見直してみてほしいのですが、正しくは以下の通りになるかと思います。

production:
<<: *default
url: <%= ENV['JAWSDB_URL']&.sub('mysql://', 'mysql2://') %>
ユーザー画像
長井宏樹

2022/11/29 16:15

Masa様

ご回答ありがとうございます。

PC再起動の上、修正いたしましたが、同じエラーが出ます。

また、念の為、

heroku logs --source=app --tailでリアルタイムログ確認しましたが、

以下1回目のメッセージのままでした。

(Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2))

ユーザー画像
masa(メンター)

2022/11/29 16:47

PC再起動の上、修正いたしましたが、同じエラーが出ます。
また、念の為、
heroku logs --source=app --tailでリアルタイムログ確認しましたが、
以下1回目のメッセージのままでした。
とありますが、一回目のメッセージとは何のことでしょうか?上記のインデントのエラーが変わったという認識で大丈夫ですか?

(複数の方が見て初めて見る方が回答することもあるため、お手数おかけして申し訳ないのですが、その都度状況は整理して説明してください🙏)

上記のようにスクショやエラー文をそのまま貼るのは大切なことなのですが、そのエラーメッセージを把握してアウトプットする、自身の状況や解決したいことを具体的に説明してもらえると助かります🙏

(該当部分のカリキュラムの見直しや、調べたことも併せてお願いいたします。)

課題1のこの部分はカリキュラムに沿って実行すると基本的には、エラーは出ない or 想定通りのエラーが出るはずです。

今は、初めてのデプロイの「データベースの作成」の手順の直前までは想定通りってことで大丈夫ですか?(エラーの確認でデータベース(MySQL)に接続できていないことを確認したところまでは想定通り?)

カリキュラムの以下の説明部分までのことです。

どうやらデータベース(MySQL)に接続できていないようです。
これはHeroku上でRailsがアクセスするデータベースの情報が正しく設定されていないことが原因です。
想定通りのエラーが確認されて「データベース作成」の手順以降で、config/database.ymlを上記のように設定してインデントのエラーが出たという認識だったのでこのファイルの修正が必要なのかと思っていました。

考えられることとしたら、add,commitしてpushで変更がherokuに反映できているかどうかというのを確認してみてください!

github上ではコードが更新されていなかったので更新して共有もしてもらえると状況が把握しやすいです🙏

ユーザー画像
長井宏樹

2022/11/29 17:29

MASA様

ご回答ありがとうございます。

解決しました。

Git cloneからやり直しまして、https://github.com/potepancamp/Hiro-Nagai/blob/master/docs/deploy/heroku.md#herokuへdeploy

こちらの内容全て通しでできました

おっしゃる通り

「初めてのデプロイ」の「データベースの作成」の手順の直前までは想定通りいっておりました。

「(中項目)初めてのデプロイ」の中の「(小項目)HerokuへDeploy」までは完了しておりました。

原因はわかりませんが、

やり直しにて、Herokuへのデプロイ完遂できました。

以降より、

手順② CircleCIでRSpecとRubocopを実行する
を進めていきたいと思います。

Discussion