理解してないのに安易にコマンドを叩くなって話
本番環境にて環境変数を設定しようとあれこれしていると...
$ rails s
・
・
・
/Users/hogetaro/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/activesupport-5.2.3/lib/active_support/message_encryptor.rb:206:in `rescue in _decrypt': ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)
ActiveSupport::MessageEncryptor::InvalidMessage
見た事ないエラーでました...
参考記事
Rails 5.2 で ActiveSupport::MessageEncryptor::InvalidMessage
https://qiita.com/scivola/items/cc06ddbfd94d3118f693
Rails5.2から追加された credentials.yml.enc のキホン
https://qiita.com/NaokiIshimura/items/2a179f2ab910992c4d39
何が起きたのか
rails credentials:editコマンド叩いたら勝手に鍵を生成して config/master.key に保存された...
新しく生成された鍵は既存のconfig/credentials.yml.enc
の復号には使えない。
参考記事によると、master.key
はrails new
した際に作成されます。そしてこのmaster.key
に記載されているキーを利用してcredentials.yml.enc
は暗号化・復号されているようだ。
このままでは、違う鍵を持っている私はcredentials.yml.enc
という名前の扉を開く事ができないらしい...
なぜこのコマンドを使ったかというと、よくコマンドの意味を理解せずにやってみたら何か変化するかも的な感じでコマンド使いました...反省
解決方法
credentials.yml.encファイルを削除してrails credentials:editコマンドもう一度
ただし開発初期段階でrails new
した時に作成されるconfig/credentials.yml.enc
と内容に違いがなく問題にならない場合に限る
今の自分の状況ではこの方法はマズいような気が。既にデプロイされているのでawsのsecret_access_key
やら設定している。
やり方
credentials.yml.enc
を右クリックでもいいのでゴミ箱へ
$ sudo EDITOR=vim rails credentials:edit
New credentials encrypted and saved.
これでconfig/master.key
は存在してなければ作られる。存在していればそれが使われる。あとcredentials.yml.enc
が新しく作り直されます。rails s
できるようになります。
新しい鍵と一緒に新しい扉に取り替える感じですかね
既存の鍵に合う錠前に付け替える感じですかね
チームメンバーにキーを教えてもらう
config/master.key
は.gitignore
によってgit管理させないようにしている。なのでgithubからcloneしてもmaster.key
は分からないという事なので自分でrails new
した環境のmaster.key
の中身が分からない場合は教えてもらうしかない。
扉を取り替えるのは大変なので家族の鍵借ります=>合鍵作ります
結論
つまらぬエラーで時間を無駄にしないように、よくよく調べて理解してからコマンド使います。
間違いがあったらご指摘ください。