I have an app on Rails 5.2 and it was previously hosted on DigitalOcean, but I need to host it on heroku. I've been reading that heroku can't read Credentials.yml of because it's on gitignore and of course I don't want it public.
So my key variables are like this (and example with redis):
host: Rails.application.credentials.redis_host,
password: Rails.application.credentials.redis_password
Heroku can't read this. So my question is what is the best approach to change that in to heroku ENV variables? Do I need to edit all my current keys (there about 340) to ENV['SOMEKEY']?
I'll appreciate you help!
Create credentials.yml and master key:
rails credentials:edit
Edit credentails:
EDITOR=vim rails credentials:edit
WORKING WITH VIM:
EXAMPLE OF HOW CREDENTIALS.YML can look:
development:
github:
client: acascascsacascascasc
secret: vdsvsvg34g34g
production:
github:
client: 34g3rvv
secret: erberb43
FIND A CREDENTIAL:
rails c
Rails.application.credentials.dig(:aws, :access_key_id)
or if an env variable is used
Rails.application.credentials[Rails.env.to_sym][:aws][:access_key_id]
The credentials.yml file should NOT be in gitignore.
The master key that decrypts the credentials SHOULD be in gitignore.
To set your master key in production:
heroku config:set RAILS_MASTER_KEY=123456789
or
heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
That's all you need to know about credentials in Ruby on Rails. Good luck :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With