rails6とherokuとmaster.keyと私。。
半ベソで5時間の格闘の末に解決できたのでまとめる
激闘の火蓋を切ったエラーがコチラ
ActiveSupport::MessageEncryptor::InvalidMessage
herokuへのpushは何度もしていたが、ずっとローカル環境でしか確認していなかったので始まりがいつだったのかはわからない。(ちゃんと確認せなかんな・・泣)
最終的な解決策
% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`
そう、私はherokuに自分のアプリのmaster.keyを登録していなかった。
無駄にグルグル回った話(読んでも時間の無駄です)
最初のエラーを調べていると
- credentials.yml.enc
- master.key
この2人がキーマンだとわかった(keyだk)
私には、この2人に見覚えがあった。
あれ?ActiveStorageの保存先をAmazonS3に設定したときにみたやつじゃん!
あんときにちょっとミスっちゃったのかな?てへ
調べているとこの件についての記事はいっぱいあった。
Rails5.2から追加された credentials.yml.enc のキホン - Qiita
Rails 5.2 で ActiveSupport::MessageEncryptor::InvalidMessage - Qiita
[Rails]credential.yml.encの編集方法 - Qiita
Rails 5.2をProduction環境に切り替える時にハマった点 - Qiita
ActiveSupport::MessageEncryptor::InvalidMessage - Qiita
めちゃくちゃある笑。みんなミスってんな(笑)
既にエラー耐性を習得している私は、軽く微笑んでいた。
そして、"どの記事にも書いてある通り"にcredentials.yml.enc
の編集を行った。
が
なおらない。
みなさんが、
「これで動くようになりました!」
「これで解決!!」
というなか、
なおらない。
落ち着いてもう一度やってみる。
なおらない
私だけ、なぜだ。
ここで少しパニックにな逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ逃げちゃダメだ
ここで暴挙に出る。
どうしてもできない場合は、
credentials.yml.enc
を一度消して、$ EDITOR="vi" bin/rails credentials:edit
を再度実行することで、credentials.yml.enc
とmaster.key
が新しく作り直されます。
やるしかない。
よし。これで行こう。 なおらなかった。
焦るな。
そういいながら、何回も見たQitaの記事をさらに何回も読む
どうしてもできない場合は、
credentials.yml.enc
を一度消して、$ EDITOR="vi" bin/rails credentials:edit
を再度実行することで、credentials.yml.enc
とmaster.key
が新しく作り直されます。
もしや、credentials.yml.enc
だけでなくmaster.key
も消してからなのでは?
2つのファイルを削除し、
$ EDITOR="vi" bin/rails credentials:edit
その2つは、新しくなって無事に帰ってきた。よかった
さあ。設定だ
慣れた手つきで設定をしていると
[ master.key ]
・・・
・・・
え?
master.keyのフォルダにはなにも入っていなかった。
動揺を隠し切れずひとりタバコに火をつける
(これはいったいどうゆうことなんだ)
[ master.key ]
もしや、railsには人工知能が搭載されていて、「こいつにmaster.keyを渡したら危ない」と判断されたのか。
そんなはずはない
もしや、クッソ暇人なハッカーが俺のPCを暇つぶしにハックしたのか?
そんなはずもない
- もう一度やる
これしか方法はない
ここまで作ったアプリを1から作り直すことを想像しながら、クッッッソ落ち込みながら、私はもう一度やり直した。
上手くいった。
今回は全て順調だ
そして設定を済ませ、試しにローカルで開いてみる。
undefined method `upload' for nil:NilClass
そう、新たな敵が現れた。
休息などない。
調べてみると、ActiveStorageと上手く噛み合っていない模様
冷静に、落ち着いて、config
内の該当ファイルを調べた。
全てあっている・・・(?)
なぜだ
不安に押し潰されそうになりながら、$ EDITOR="vi" bin/rails credentials:show
でcredentials.yml.enc
をもう一度確認してみた。
# aws: # access_key_id: WATASHINOKEYID # secret_access_key: wAtaInoSecreTNaacCesKey # Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies. secret_key_base: jofjadkgjaigrjgigjwtu30tujag8hu3j4oi9aehg4ij4pq4itjrgtekitou
そう、コメントアウトを消していなかった。
一人ぼっちの部屋で、一人少し照れながら、一人で虚しく直した
これで完璧だ!
ローカルでは上手く動いている!
$ git push heroku master
・・・
ActiveSupport::MessageEncryptor::InvalidMessage
振り出しに戻った
顔面蒼白で見つけた記事
HerokuにRailsアプリをデプロイする - Qiita
やってみたらできた!
そもそもherokuの設定をちゃんと終わらせていなかったみたい←