問題
ローカルでは問題なくパスするテストが、CircleCIでのRun rspecでエラーとなった。
前回、
- .circleci/config.ymlへの設定
- Dockerfile.devへの設定
- docker-compose.ci.ymlへの設定
といった設定を行った、こちらの続き。
CircleCI管理画面より設定
Settings >user_name >app_name > Environment Variables
- HEROKU_API_KEY
- RAILS_MASTER_KEY
を追加
デプロイされたアプリの確認
HerokuアプリのURLは、CircleCIの、heroku_deployの、
実行項目の中の、Deployの中の下の方にある。
現在の環境では、CircleCIでデプロイが完了するたびに、新しいアプリがheroku上に作成されるよう、.circleci/config.yml
に設定されている為、こちらで確認するようにしている。
次は、herokuにデプロイしたアプリが表示されない、、
よしログを確認しよう。
CircleCIを使用していない場合は、Herokuの、
こちらから確認するが、
CircleCIを使用している場合は、先程のCircleCIのheroku_deployの下に、
Run post-deploy tasks、という項目があるので、こちらから確認できる。
内容を確認すると、
undefined method `[]' for nil:NilClass (NoMethodError)
該当のファイルの5行目を確認すると、環境変数を呼び出している行であることがわかる。
Herokuの環境変数確認・登録
heroku上に登録する環境変数
ターミナルで確認
$ heroku config
登録のある環境変数一覧を確認。
RAILS_MASTER_KEY:
SECRET_KEY_BASE:
登録
$ heroku config:set 環境変数名=value
ちなみに、、
登録の削除は
$ heroku config:unset 環境変数名
ここまでで、無事にアプリを表示することができるようになった。
今回は、開発の途中でローカルにて、環境変数を設定し、管理をbash_profile
からconfig/credentials.yml.enc
に変更した事と、変数の設定を後回しにして実装を急いでしまった事が原因でした。
これからは、環境変数を使用すると同時に、これらの登録を先に行い、デプロイまでが通過するか、確認するようにしたいと思います、、
また、ローカルではエラーが無くて、CircleCIやデプロイ後に動かない場合は、環境変数を真っ先に疑おうと思い始めました。
終わりに。
最後まで読んで頂きありがとうございます
転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。