経緯
どうも、プログラミング(3ケ月)初心者です!
今回は、herokuデプロイしたアプリケーションへ画像投稿できるように、s3を導入しました。
この中で2日苦しんだことがあったので、共有したいと思います。
ちなみに、作業自体は、以下のサイトを参考に実施しました。
herokuでS3に画像をアップロード(Rails)
※今回紹介するコードは全てターミナル上で実行するものになります。
エラーについて
(意気揚々)最初に紹介したページに沿って設定、いざ!!
git push heroku master
###(地獄の始まり)あれ、ちゃんと設定したのに…
remote: Tasks: TOP => environment
remote: (See full trace by running task with --trace)
remote:
remote: !
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 dailystack.
remote:
最初のうちはどこがエラー吐いてるのか確認方法もわかりませんでした。
(困惑)まず、ログを見てみるか…
$ heroku logs --tail
heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=dailystack.herokuapp.com request_id=57401fa0-57b2-48ca-96b1-d0b49ad53fa2 fwd="111.239.154.52" dyno= connect= service= status=503 bytes= protocol=https
・
・
・
ふ、ふーん。なるほどね。(やべー、全くわかんない)
(一筋の光)Railsを走らせてみようか。
$ heroku run rails c
Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)
キーが上手く設定せれていないのだろう。
これ以上どう設定すればいいのやら…
解決方法
原因それは…
ずばり、heroku上で環境変数を設定できていなかったことでした。
ずっと、不思議ではありました。
ローカルで設定した環境変数をherokuはどうやって値を引っ張ってるんだろうって。。
はい、そんなことできるわけないですよね笑
できたら環境変数の意味全くないです。
環境変数の設定方法
$ heroku config:set S3_ACCESS_KEY=" <<CSVダウンロードしたAccessキー>> "
$ heroku config:set S3_SECRET_KEY=" <<CSVダウンロードしたSecretキー>> "
$ heroku config:set S3_BUCKET_KEY=" <<S3のBucketの名前>> "
$ heroku config:set S3_REGION=" <<ap-northeast-1>> "
# << >>はわかりやすいように付けているだけです。実際は消してください。
上記のコマンドでherokuに環境変数を設定してあげます。
最初に紹介したサイトでも一番最後に載ってましたね。。
意味が理解できてなくて飛ばしてました、、てへ
まとめ
さて、いつものことながら、拙いポエムを最後まで読んでいただき、ありがとうございました。
今回重要と感じたのは、エラーが出た時の対応についてです。
初心者の皆さんはherokuでエラーを吐かれても最初、何が起こっているかわからないと思います。
長ったらしかったかも知れませんが、今回は私なりのエラーへのアプローチ方法も記載していますので、何かの参考になれば嬉しいです。