@ma1031 (政樹 保坂)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

【AWS・EC2・RDS】デプロイにおいて、bundle exec rails assets:precompile RAILS_ENV=productionをするとActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessageというエラーがでてしまう

解決したいこと

現在cloud9にて作成したアプリケーションをデプロイしようとしているのですがassets:precompileだうまくいかないため解決方法を教えて欲しいです。

発生している問題・エラー

出ているエラーメッセージを入力
[ec2-user@]$ bundle exec rails assets:precompile RAILS_ENV=production
rails aborted!
ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessage
~
~
~
~
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)
### 自分で試したこと
https://qiita.com/suzy1031/items/64598d44b428ccd7abc5の記事を参照してcredentials.yml.encとmaster.keyファイルを削除してrails credentials:editコマンドを実行しました。
0 likes

4Answer

エラーメッセージを見る限りdb:load_config以下のエラーなので、dbディレクトリ以下にenvironment.rbのようなファイルはありませんか?
エラー対象のソースコードを読まないと何とも言えません。

0Like

Comments

  1. @ma1031

    Questioner

    回答ありがとうございます。 

    environment.rbのファイルには
    # Load the Rails application.
    require_relative 'application'

    # Initialize the Rails application.
    Rails.application.initialize!

    になります。
  2. こちらのコマンドはproduction用のリモートサーバ内での実行でしょうか?
    もしlocalで`rails s`などを実行して`ActiveSupport::MessageEncryptor::InvalidMessage`のエラーが出ないようであれば、localにある`credentials.yml.enc`と`master.key`をリモートサーバにコピーして`bundle exec rails assets:precompile RAILS_ENV=production`が正常に動作するか確認してみるといいと思います。
  3. @ma1031

    Questioner

    ローカルでは通常通りrails sはできるエラー出ません。
    ローカルにあるcredentials.yml.enc`と`master.key`を削除し再度作成し
    username:~/environment/アプリケーション名 $ scp -i ~/.ssh/practice-aws.pem config/master.key ec2-user@IPアドレス:GitHubのリポジトリ名/configを実行しアップロードしましたが、変わりません。
  4. master.keyだけリモートにコピーしてるように見えますが、credentials.yml.encもコピーしましたか?

credentials.yml.encもコピーしなければならなかったのですね...無事デプロイさせることができました。ありがとうございました。

0Like

この二つのファイルは鍵のペアみたいなものなのですが、master.key.gitignoreの対象にしていて(するべきですが)、githubリポジトリへのpush等でデプロイされる場合、credentials.yml.encを更新していたりすると鍵が合わなくなる場合がありそうです。

github actionsなど何らかの手段で、デプロイのタイミングでローカルのmaster.keyをサーバにコピーする、または環境変数をセットする、等の措置が必要に思います。

0Like

credentials.yml.encもコピーしなければならなかったのですね…コピーすることによって無事デプロイすることができました。本当にありがとうございました!

0Like

Your answer might help someone💌