環境
- 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`