LoginSignup
17
14

More than 3 years have passed since last update.

Heroku上でRailsデプロイ時にmaster.keyのApplicationError

Last updated at Posted at 2018-12-05

Rails5.2から secret.yml が消えて、 credentials.yml.enc で秘匿情報を管理するようなったらしい。これをうまいこと使ってやらないと、Heroku上でデプロイに失敗する要因になったりする。

参考:
Rails Encrypted Credentials on Rails 5.2
Rails5.2から追加された credentials.yml.enc のキホン

登場人物

- config/master.key
- config/credentials.yml.enc

それぞれのファイルは、 rails new されたときに自動で追加される。ただし、 master.key.gitignore に追加されているのでリポジトリにコミットされない。

ハマったこと

Heroku上でapplication errorが起きた際に、master.keyの不一致によっておこっていることは、 heroku logs -tails で確認できていたけど、なにかの拍子に消してしまっていた master.key の再生成の方法がわからなかったため、Heroku上でrailsアプリが読み込めずにエラーになっていた。

つまり、Heroku上の環境変数に登録している master.key(RAILS_MASTER_KEY) と、登録されている credentials.yml.enc の内容の不一致が起きていたため、application エラーが起こっていた。

いろいろ探した結果、下記の記事にたどり着いた。

参考:Rails 5.2 で ActiveSupport::MessageEncryptor::InvalidMessage

master.key を紛失したらどうなる?(2018-08-01 追記)

の箇所。

素直に、既に生成されてしまっている config/credentials.yml.enc を削除して下記を実行すれば config/credentials.yml.enc も再生成され、かつ master.key も作り直せたので、再生成された master.key の内容をherokuの環境変数にセットし直して一件落着。

$ EDITOR=vim rails credentials:edit

このとき,config/master.key は,存在していなければ作られるし,存在していればそれが使われる。

とのこと。

17
14
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
14