LoginSignup
2
5

More than 3 years have passed since last update.

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

Posted at

問題

ローカルでは問題なくパスするテストが、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への設定

.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への設定

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への設定

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

2
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
5