# Is ok to have a large amount of env vars?

**URL:** <https://discuss.rubyonrails.org/t/is-ok-to-have-a-large-amount-of-env-vars/75580>\
**Category:** rubyonrails-talk\
**Created:** [June 4, 2020, 8:46pm UTC](https://discuss.rubyonrails.org/t/is-ok-to-have-a-large-amount-of-env-vars/75580 "2020-06-04T20:46:37Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![juanse](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/juanse/32/1339_2.png) [@juanse](https://discuss.rubyonrails.org/u/juanse)\
**Post date:** [June 4, 2020, 8:46pm UTC](https://discuss.rubyonrails.org/t/is-ok-to-have-a-large-amount-of-env-vars/75580/1 "2020-06-04T20:46:37Z")

</div>

I am considering ideas for a project in which I would have to deal with a big amount of stripe’s credentials for entities I’m dealing with. Traditionally, I would have used environmental variables, but I was wondering If maybe having too many of them would be a problem.

Let’s say we are talking about 1000+

---

<div class="post-metadata">

**Author:** ![vbalazs](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/vbalazs/32/679_2.png) [@vbalazs](https://discuss.rubyonrails.org/u/vbalazs)\
**Post date:** [June 4, 2020, 9:21pm UTC](https://discuss.rubyonrails.org/t/is-ok-to-have-a-large-amount-of-env-vars/75580/2 "2020-06-04T21:21:53Z")

</div>

Would you need all the stripe credentials all the time (in memory)? Would you need to update them with deployments or would you need something more real-time?

Not sure if having many environment variables could pose an issue, I can imagine processes becoming heavy due to this (eg.: on fork) but I don’t have hands-on experience on a similar setup.

Furthermore, I think nowadays is not a good practice to store secrets in environment variables, some discussions in the topic:

- [Environment Variables Considered Harmful for Your Secrets | Hacker News](https://news.ycombinator.com/item?id=8826024)
- [Why you shouldn't use ENV variables for secret data](https://diogomonica.com/2017/03/27/why-you-shouldnt-use-env-variables-for-secret-data/)

There are many alternatives, AWS also offers some services, there is also Vault from Hashicorp, or keywhiz from square which might be better suited for this use case.

---

<div class="post-metadata">

**Author:** ![sdubois](https://avatars.discourse-cdn.com/v4/letter/s/a3d4f5/32.png) [@sdubois](https://discuss.rubyonrails.org/u/sdubois)\
**Post date:** [June 5, 2020, 6:02am UTC](https://discuss.rubyonrails.org/t/is-ok-to-have-a-large-amount-of-env-vars/75580/3 "2020-06-05T06:02:03Z")

</div>

How about using encrypted Rails credentials/secrets?

> <https://github.com/rails/rails/blob/main/railties/lib/rails/commands/credentials/USAGE>

> <https://github.com/rails/rails/blob/main/railties/lib/rails/commands/secrets/USAGE>

I’m also interested to know what is the difference between them and whether there is a guide about them somewhere.

---

<div class="post-metadata">

**Author:** ![ybart](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/ybart/32/1479_2.png) [@ybart](https://discuss.rubyonrails.org/u/ybart)\
**Post date:** [June 5, 2020, 8:22am UTC](https://discuss.rubyonrails.org/t/is-ok-to-have-a-large-amount-of-env-vars/75580/4 "2020-06-05T08:22:58Z")

</div>

> [@sdubois](#):
>
> I’m actually what is the difference between them

Secrets which was introduced in Rails 5.1 is deprecated in favor of credentials since Rails 5.2.

Sources:

- [https://github.com/rails/rails/pull/30067](https://github.com/rails/rails/pull/30067)
- [Goodbye Secrets. Welcome Credentials! | by Stefan Wintermeyer | Medium](https://medium.com/@wintermeyer/goodbye-secrets-welcome-credentials-f4709d9f4698)

---

<div class="post-metadata">

**Author:** ![pedrofsteim](https://sea2.discourse-cdn.com/rubyonrails/user_avatar/discuss.rubyonrails.org/pedrofsteim/32/1208_2.png) [@pedrofsteim](https://discuss.rubyonrails.org/u/pedrofsteim)\
**Post date:** [June 5, 2020, 12:18pm UTC](https://discuss.rubyonrails.org/t/is-ok-to-have-a-large-amount-of-env-vars/75580/5 "2020-06-05T12:18:54Z")

</div>

Handling all these manually using ENV or even rails credentials doesn’t seem practical. You probably need a 3rd party service or your own solution.
