5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails6系で、herokuにデプロイしようとしたら手間取った件について

Posted at

この記事で書くこと

久しぶりにHerokuでRailsアプリケーションを作成して公開しようとしたら、いくつかの躓きがあったのでその備忘録。
具体的にいうと、credentialsの扱いについて。
https://railsguides.jp/6_0_release_notes.html#railties-%E4%B8%BB%E3%81%AA%E5%A4%89%E6%9B%B4

環境

Rails 6.0.3.2
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux]

起きたこと

Rails.application.credentials を読み込もうとしてる箇所でデプロイ中に参照エラーが発生してデプロイが失敗する。
herokuの公式ドキュメントを見ても、情報が見当たらなかったので、調べていると HerokuにRailsアプリをデプロイする という記事を見つけたので、読んでみる。この環境変数が何を指してるのか解らなかったので、理解するために、もう少し調べると、 Rails5.2から追加された credentials.yml.enc のキホン という記事を見つけ、 config/master.key が共有されない環境では、この環境変数を設定することで、暗号化されたファイルを解読することができることがわかりました。参考にさせていただいた記事の皆さんありがとうございます! :bow:
というわけで、
config/master.key の内容をherokuの環境変数に設定する。

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

を実行しました。
③再度デプロイするも、失敗。今度は、 ActiveSupport::MessageEncryptor::InvalidMessage が発生していることが原因。
④自分の環境を見直すと、 以下の内容でした。

config/master.key
config/credentials/production.key
config/credentials/development.key

config/credentials.yml.enc
config/credentials/production.yml.enc
config/credentials/development.yml.enc

自分が環境変数でセットした master.key で開錠できるのは、 config/credentials.yml.enc です。
でも、自分は config/credentials/production.yml.enc を作成していたので、そちらが読み込まれて、 master.key で解錠できずにエラーが発生しているのではないかと気付きました。

④正しい鍵の内容をherokuの環境変数に設定し直す。

heroku config:set RAILS_MASTER_KEY=`cat config/credentials/production.key`

⑤設定し直すと、無事デプロイできました。

5
3
0

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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?