rails5.2以降から、sercret.ymlからcredentials.yml.encに移行になりました。
本番環境での環境変数の設定につまずいたため、下記に手順をまとめました。
動作環境
- Ruby 2.5.1
- Ruby on Rails 5.2.4
環境変数の設定
rails5.2以降では、.gitignoreに/config/master.keyがデフォルトで指定されているため、本番環境ではcredentials.yml.encを読み取ることが出来ずサーバ起動時にエラーが発生します。
(config/environments/production.rbの設定がconfig.require_master_key = trueのとき
)
.
.
remote: Missing encryption key to decrypt file with. Ask your team for your master key and write it to /tmp/build_28d4b89cb989ae71072d0bdb96793752/config/master.key or put it in the ENV['RAILS_MASTER_KEY'].
remote:
remote: !
remote: ! Precompiling assets failed.
remote: !
remote: ! Push rejected, failed to compile Ruby app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to change-life.
remote:
To https://git.heroku.com/app-name.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/app-name.git'
そのため下記の手順で本番環境に環境変数を設定します。
$ heroku config:set RAILS_MASTER_KEY=`ここに/config/master.keyの値をセット`
以下を実行し正しく環境変数が設定されていればOK
$ heroku config
削除する場合
$heroku config:unset RAILS_MASTER_KEY
以上です。
参考↓↓
Ruby on Railsのおすすめ本
Ruby on Rails定番の一冊です。Railsの機能について、プログラミングスクールなどでも教わらない内容も学習できて、理解を深めることができました。
Railsについてもっと詳しく知りたいという方はぜひ読んでみてください。↓↓