超初心者につき違ったら本当にごめんなさい。備忘録です。
OpenSSL::Cipher::CipherErrorが出た
config/master.key: No such file or directoryとかのエラーが出た時も使えるかも。AWSにてEC2とかMySQLとかRDSとかで開発環境・本番環境の勉強中、OpenSSL::Cipher::CipherErrorが出ました。これは鍵の受け渡しが上手くいっていない時に出るエラーです。 credentials.yml.encとmaster.keyが鍵穴と鍵の関係性になっているのですが、本番環境(私でいうとEC2)に鍵穴と鍵が無かったり、鍵穴と鍵が正しいものでは無かった時にOpenSSL::Cipher::CipherErrorが出ます。↓これは正しく送られた時の流れ
わざわざmaster.keyだけは直接送るんですねえ
なんでこんな面倒なことするの!?というと、Git Hubは誰でも見れちゃうからキケン!という事で鍵だけはGit Hubからではなく直接送りましょうね~となっている(とりあえずそう習った)
解決方法
①開発環境(私だとcloud9)のconfig/credentials.yml.encを削除②EDITOR=vim rails credentials:edit #開発環境のターミナル
③scp -i ~/.ssh/EC2の鍵.pem config/master.key ec2-user@IPアドレス:アプリケーション名/config #開発環境のターミナル
④新しくなったcredentials.yml.encをGit Hubへpush #開発環境のターミナル
⑤本番環境(私だとEC2)に接続する
⑥[ec2-user@ip-xxx-xxx-xx-xx appname]$git pull origin master #本番環境のアプリケーション内で行う
で解決すると思います。
もし本番環境のcredentials.yml.encとmaster.keyが開発環境と同じか確認する場合は
[ec2-user@ip-xxx-xxx-xx-xx appname]$find / -name credentials.yml
/home/ec2-user/appname/config/credentials.yml.enc #出力結果
[ec2-user@ip-xxx-xxx-xx-xx appname]$vi /home/ec2-user/appname/config/credentials.yml.enc
でviに入ると見れます。私はviに慣れてなくて超怖かったんですが、:q!で保存せず戻れるし、:wqで保存して出られるので急に画面が変わってびっくりしても落ち着けば大丈夫(たぶん!)
おまけ
bundle exec rails assets:precompile RAILS_ENV=production
をしたら、
rails aborted! LoadError: Could not load the 'mysq12' Active Record adapter. Ensure that the adapter is spelled correctly in config/database.yml and that you've added the necessary adapter gem to your Gemfile.
とエラーが出てうーん。。。と悩んだ話。Gemfileとかbundlerとか色々見てみたけど分からず・・・
おまけの結論
mysql12(mysqlじゅうに)になってました!!!
いや本当こんなこと!?いや私アホすぎん!?悩んだ5時間の無駄さ!色々調べたのに悔しい!database.ymlとGemfileをviで直して解決しました・・・orz
打ち間違いには注意!エルと1の打ち間違いは10回以上やってますわよ?私よ、反省してくれ。