Railsのmaster.keyで泣くほどハマった・・

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.encmaster.keyが新しく作り直されます。


やるしかない。


よし。これで行こう。 なおらなかった。


焦るな。


そういいながら、何回も見たQitaの記事をさらに何回も読む


どうしてもできない場合は、
credentials.yml.encを一度消して、$ EDITOR="vi" bin/rails credentials:editを再度実行することで、credentials.yml.encmaster.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:showcredentials.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

f:id:yukitoku_sw:20200204144615p:plain

やってみたらできた!

そもそもherokuの設定をちゃんと終わらせていなかったみたい←