【CircleCI】Run  rspecテスト失敗から解決に向けて設定した環境変数(1/2)

#問題
ローカルでは問題なくパスするテストが、CircleCIでのRun rspecでエラーとなった。

**CircleCIのRun rspec エラー内容（抜粋）**

```
Failures:
   1) リクエストが成功する
 
     Failure/Error: let(:url) { Rails.application.credentials.api[:API_URI] }
 
     NoMethodError:
        undefined method `[]' for nil:NilClass
 
     # ./spec/requests/suggests_spec.rb:6:in `block (2 levels) in <top (required)>'
 
     # ./spec/requests/suggests_spec.rb:11:in `block (2 levels) in <top (required)>'
 
 ```
 エラー内容を確認。
 そして該当のファイルを確認すると。
 ちょうど、

 ```
 let(:url) { Rails.application.credentials.api[:API_URI] }
 ```
 環境変数を取得し、インスタンス変数に代入しようとしている行であった。
 ここから、CircleCIへうまく環境変数を渡す事ができていないことがわかる。
 ここから、各設定項目を下記の通り確認していく。



##.circleci/config.ymlへの設定

```yaml:.circleci/config.yml

heroku_deploy:
    working_directory: ~/my_app
    docker:
      - image: sue445/heroku-cli
    steps:
      - checkout
      - build-tools/install-ci-tools
<!---(中略)->
      - run:
          name: Deploy
          command: |
            git push https://heroku:$HEROKU_API_KEY@git.heroku.com/$HEROKU_APP_NAME.git master
      - run:
          name: Run post-deploy tasks
          command: |
            heroku config:set AWS_ACCESS_KEY_ID=$AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY=$AWS_SECRET_ACCESS_KEY RAILS_MASTER_KEY=$RAILS_MASTER_KEY # ここ
            heroku run bin/rails db:migrate
            heroku run bin/rails runner "['products', 'taxons', 'option_values', 'product_option_types', 'product_properties', 'variants', 'assets'].each { |table| Spree::Sample.load_sample(table) }"
```

**RAILS_MASTER_KEY=$RAILS_MASTER_KEY**、を追加



##Dockerfile.devへの設定

```dev
FROM ruby:2.5.1-stretch

ENV ENTRYKIT_VERSION 0.4.0
ARG RAILS_MASTER_KEY  #　ここ
ENV RAILS_MASTER_KEY ${RAILS_MASTER_KEY}  #　ここ
WORKDIR /my_app

RUN apt-get update                                                                                                                      \
  && apt-get install                                                                                                                    \
    openssl                                                                                   
```    

**ARG RAILS_MASTER_KEY**
**ENV RAILS_MASTER_KEY ${RAILS_MASTER_KEY}**
を追加

##docker-compose.ci.ymlへの設定

```yaml
version: "3"

services:
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: password
    networks:
      - default
    ports:
      - '33306:3306'
  redis:
    image: redis:alpine
    networks:
      - default
    ports:
      - '36379:6379'
  my_app:
    build:
      context: .
      dockerfile: Dockerfile.ci
    container_name: my_app
    ports:
      - '3000:3000'
    environment:
      MYSQL_USERNAME: root
      MYSQL_PASSWORD: password
      MYSQL_HOST: mysql
      REDIS_URL: "redis://redis:6379"
      RAILS_MASTER_KEY: ${RAILS_MASTER_KEY}　#ここ
    depends_on:
      - mysql
      - redis
    networks:
      - default
    command: bundle exec rails server -b 0.0.0.0
```
**RAILS_MASTER_KEY: ${RAILS_MASTER_KEY}**
を追加。

CircleCI管理画面からの設定・Herokuの環境変数確認・登録について、長くなってしまったので、また追加で投稿したいと思います。


###終わりに。
最後まで読んで頂きありがとうございます:bow_tone1:
転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。