DokkuのActiveSupport::EncryptedFile::MissingKeyError

Deploying to Dokkugit push dokku master がうまくいかず、エラーが表示される。

エラー内容

$ git push dokku master
〜〜〜省略〜〜〜
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       rake aborted!
       ActiveSupport::EncryptedFile::MissingKeyError: Missing encryption key to decrypt file with. Ask your team for your master key and write it to /tmp/build/config/master.key or put it in the ENV['RAILS_MASTER_KEY'].
〜〜〜省略〜〜〜
       !
       !     Precompiling assets failed.
       !
To ujull.com:gnote
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'dokku@ujull.com:gnote'

config/application.rb の config.assets.initialize_on_precompile = false 対応が必要と思っていたが、ログを上までスクロールして見てみたところ、「rake aborted!」の箇所に、キーがないよ、というメッセージがあった。

対応策

Rails 5.xのCredentialsを使っている場合、dokkuサーバー側の環境変数にRAILS_MASTER_KEYを設定する必要があるため、以下をubuntuサーバー側で実行する。

$ dokku config:set [アプリ名] RAILS_ENV=production RAILS_MASTER_KEY=[master.keyの値]

【例(KEYはダミー)】$ dokku config:set ruby-rails-sample RAILS_ENV=production RAILS_MASTER_KEY=B6ZSTIWcxFvoJvlqnxlFjXEDOuVnZVBhw

そのあとに、 $ dokku config [アプリ名] で設定内容を確認できる。

参考