環境
- ruby3.0.2
- rails7.0.0
- Docker
原因
test.ruby
user_name: Rails.application.credentials.gmail[:user_name],
password: Rails.application.credentials.gmail[:password],
個人制作する上で上記のようなコードを書いていたのだが、Herokuにデプロイする際にRails.application.credentials
がnill
になっているというエラーがでた。
credentialsはcredentials.yml.enc
を参照している。
credentials.yml.encとはどういうファイルなのか
credentials.yml.enc
は秘匿情報の設定、つまり誰にも見られたくない情報を記述するファイルです。上述したコードだとgmailのユーザーネームやパスワードは第三者に知られると悪用される危険性があるのでcredentials.yml.enc
に記述します。
そしてこのファイルを暗号化して保存するためにmaster.key
を使用します。
このファイルはgitなどにpushする時、自動で.gitリポジトリの対象から省いてくれます。
解決方法
Herokuにデプロイした時もmaster.key
がpushの対象から外れてしまうためcredentials
がnil
になっていた。
環境変数にmasterkeyを設定することで問題を解決できた。
$ heroku config:set RAILS_MASTER_KEY=`cat config/master.key`