# Stubbing Rails Secrets into Build

**URL:** <https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004>\
**Category:** Build Environment\
**Tags:** rails, ruby\
**Created:** [October 24, 2018, 9:29pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004 "2018-10-24T21:29:37Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![jnguyen1990](https://avatars.discourse-cdn.com/v4/letter/j/8c91f0/32.png) [@jnguyen1990](https://discuss.circleci.com/u/jnguyen1990)\
**Post date:** [October 24, 2018, 9:29pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/1 "2018-10-24T21:29:37Z")

</div>

Hi, I’ve been trying to set up circleci in but I’m having trouble stubbing in variables from my `secrets.yml` file that is not included in the repo. I’ve tried to set them through Settings -\> Environment Variables as well as adding this to the config file

```auto
dependencies:
      override:
        - mv config/secrets.ci.yml config/secrets.yml

```

and create a second secrets file with fake information that I can add to the repo.

I’ve also tried to add the variable directly to the `config.yml` file like this

```auto
  environment:
    apikey_id: "123"

```

They are still failing, asking me to include an API key that is in the `secrets.yml` file

Does anyone have any ideas?

---

<div class="post-metadata">

**Author:** ![halfer](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/halfer/32/9083_2.png) [@halfer](https://discuss.circleci.com/u/halfer)\
**Post date:** [October 25, 2018, 7:02am UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/2 "2018-10-25T07:02:42Z")

</div>

What software reads that file? What is asking you to include an API key?

---

<div class="post-metadata">

**Author:** ![jnguyen1990](https://avatars.discourse-cdn.com/v4/letter/j/8c91f0/32.png) [@jnguyen1990](https://discuss.circleci.com/u/jnguyen1990)\
**Post date:** [October 25, 2018, 6:04pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/3 "2018-10-25T18:04:26Z")

</div>

We use a gem called mailchimp and then initialize it  
`$mailchimp = Mailchimp::API.new(Rails.application.secrets.mailchimp_api_key)`

This is the error it gives me in circleci

````auto

** Invoke db:create (first_time) 
** Invoke db:load_config (first_time) 
** Execute db:load_config 
** Execute db:create Created database 'circle_ruby_test' 
** Invoke db:schema:load (first_time) 
** Invoke environment (first_time) 
** Execute environment rake aborted! Mailchimp::Error: You must provide a MailChimp API key /home/ubuntu/myapp/vendor/bundle/ruby/2.3.0/gems/mailchimp-api-2.0.6/lib/mailchimp.rb:22:in `initialize'```
````

---

<div class="post-metadata">

**Author:** ![halfer](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/halfer/32/9083_2.png) [@halfer](https://discuss.circleci.com/u/halfer)\
**Post date:** [October 25, 2018, 6:11pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/4 "2018-10-25T18:11:57Z")

</div>

What is the absolute path it is expecting to see your secrets file? I wonder if it is looking in the wrong location (or you are copying the file to the wrong location)?

---

<div class="post-metadata">

**Author:** ![jnguyen1990](https://avatars.discourse-cdn.com/v4/letter/j/8c91f0/32.png) [@jnguyen1990](https://discuss.circleci.com/u/jnguyen1990)\
**Post date:** [October 25, 2018, 6:47pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/5 "2018-10-25T18:47:18Z")

</div>

This is the config file

```auto
#
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
#
version: 2

dependencies:
  override:
    - mv config/secrets.ci.yml config/secrets.yml
jobs:
  build:
    docker:
      # specify the version you desire here
      
      # Specify service dependencies here if necessary
      # CircleCI maintains a library of pre-built images
      # documented at https://circleci.com/docs/2.0/circleci-images/
      # - image: circleci/postgres:9.4

    environment:
      mailchimp_api_key: "asdfasdfasdfasdf-us9"
    
    working_directory: ~/repo
      
    steps:
      - checkout

      # Download and cache dependencies
      - restore_cache:
          keys:
          - v1-dependencies-{{ checksum "Gemfile.lock" }}
          # fallback to using the latest cache if no exact match is found
          - v1-dependencies-

      - run:
          name: install dependencies
          command: |
            bundle install --jobs=4 --retry=3 --path vendor/bundle

      - save_cache:
          paths:
            - ./vendor/bundle
          key: v1-dependencies-{{ checksum "Gemfile.lock" }}
        
      # Database setup
      - run: bundle exec rake db:create
      - run: bundle exec rake db:schema:load

      # run tests!
      - run:
          name: run tests
          command: |
            mkdir /tmp/test-results            
            bundle exec rake test

      # collect reports
      - store_test_results:
          path: /tmp/test-results
      - store_artifacts:
          path: /tmp/test-results
          destination: test-results

```

With the absolute path to my secrets being `/Users/nguyen1990/Repositories/myapp/config/secrets.yml`

---

<div class="post-metadata">

**Author:** ![halfer](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/halfer/32/9083_2.png) [@halfer](https://discuss.circleci.com/u/halfer)\
**Post date:** [October 25, 2018, 6:51pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/6 "2018-10-25T18:51:02Z")

</div>

Hmm, I wonder whether you are getting your syntaxes mixed up. There is no top-level key called `dependencies` as far as I know. [Docs are here](https://circleci.com/docs/2.0/configuration-reference/).

Where did you get that syntax from?

---

<div class="post-metadata">

**Author:** ![jnguyen1990](https://avatars.discourse-cdn.com/v4/letter/j/8c91f0/32.png) [@jnguyen1990](https://discuss.circleci.com/u/jnguyen1990)\
**Post date:** [October 26, 2018, 2:59pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/7 "2018-10-26T14:59:16Z")

</div>

I honestly dont remember where I saw this. Where should I put the `dependencies` key?

---

<div class="post-metadata">

**Author:** ![halfer](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/halfer/32/9083_2.png) [@halfer](https://discuss.circleci.com/u/halfer)\
**Post date:** [October 26, 2018, 5:02pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/8 "2018-10-26T17:02:23Z")

</div>

There is no such thing, that’s my point. What you do want it to do? 🙂

If this is part of an ordinary job flow, then you need to make a `run` step after your `checkout`.

---

<div class="post-metadata">

**Author:** ![jnguyen1990](https://avatars.discourse-cdn.com/v4/letter/j/8c91f0/32.png) [@jnguyen1990](https://discuss.circleci.com/u/jnguyen1990)\
**Post date:** [October 26, 2018, 6:56pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/9 "2018-10-26T18:56:19Z")

</div>

Oh thats strange. I saw it here [How can I set secrets.yml for test environment for CircleCI?](https://discuss.circleci.com/t/how-can-i-set-secrets-yml-for-test-environment-for-circleci/2304)

Essentially I just need to load a fake `secrets.yml` file or just replace the `mailchimp_api_key` secrets key that is called.

Is there a reason why I can’t just use Settings -\> Environment Variables?

---

<div class="post-metadata">

**Author:** ![halfer](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/halfer/32/9083_2.png) [@halfer](https://discuss.circleci.com/u/halfer)\
**Post date:** [October 26, 2018, 8:22pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/10 "2018-10-26T20:22:39Z")

</div>

> [@jnguyen1990](#):
>
> I saw it here

Ah, from 2016 - I expect that is valid in Circle 1.0, which is now no longer in operation.

> [@jnguyen1990](#):
>
> Is there a reason why I can’t just use Settings -\> Environment Variables?

I would certainly try it, good idea.

---

<div class="post-metadata">

**Author:** ![jnguyen1990](https://avatars.discourse-cdn.com/v4/letter/j/8c91f0/32.png) [@jnguyen1990](https://discuss.circleci.com/u/jnguyen1990)\
**Post date:** [October 29, 2018, 4:37pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/11 "2018-10-29T16:37:54Z")

</div>

I’ve tried using the variables and it does not work. It shows that it’s loading in, but still errors out

 ![01%20AM](https://global.discourse-cdn.com/circleci/original/3X/2/f/2feb27fba7f82db680ade02072ed3fcd89200063.png)

---

<div class="post-metadata">

**Author:** ![jnguyen1990](https://avatars.discourse-cdn.com/v4/letter/j/8c91f0/32.png) [@jnguyen1990](https://discuss.circleci.com/u/jnguyen1990)\
**Post date:** [October 29, 2018, 4:47pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/12 "2018-10-29T16:47:32Z")

</div>

![17%20AM](https://global.discourse-cdn.com/circleci/original/3X/0/8/085422fda01360686bae037e45b8eca65192e131.png)  
And the code that is called is `$mailchimp = Mailchimp::API.new(Rails.application.secrets.mailchimp_api_key)`

---

<div class="post-metadata">

**Author:** ![jnguyen1990](https://avatars.discourse-cdn.com/v4/letter/j/8c91f0/32.png) [@jnguyen1990](https://discuss.circleci.com/u/jnguyen1990)\
**Post date:** [October 30, 2018, 5:40pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/13 "2018-10-30T17:40:14Z")

</div>

Did you have any idea @halfer?

---

<div class="post-metadata">

**Author:** ![halfer](https://sea2.discourse-cdn.com/circleci/user_avatar/discuss.circleci.com/halfer/32/9083_2.png) [@halfer](https://discuss.circleci.com/u/halfer)\
**Post date:** [October 30, 2018, 7:37pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/14 "2018-10-30T19:37:53Z")

</div>

Not really; it’s a bit hard to help, since `rake` is just a task runner, and it could be doing any number of things (and the code is not visible here). Can you create a minimum problem example on GitHub? You can use an invalid key, since presumably the error will be different if a key is provided and incorrect.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/circleci/original/3X/5/1/511608acda8e85906e15909b57bd0a46c1dbe291.png) [@system](https://discuss.circleci.com/u/system)\
**Post date:** [January 28, 2019, 7:37pm UTC](https://discuss.circleci.com/t/stubbing-rails-secrets-into-build/26004/15 "2019-01-28T19:37:57Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
