2017-05-22 14 views
2

私はcapistranoでステージング環境にデプロイしようとしています。 私は暗号化された秘密を設定し、開発時にテストして、秘密が利用可能に見えます。 read_encrypted_secrets = trueのステージング環境設定をセットアップしました。私の秘密鍵ファイルはgit-ignoredです。私は自分のステージング環境にsshして、secrets.yml.keyapp_name/current/configディレクトリに配置しました。私はAWS EC2インスタンスにデプロイしています。私はRAILS_MASTER_KEY環境変数を使用していません。Rails 5.1 Capistrano secrets.yml.keyでデプロイ

私はcap staging deployを実行して、私のリリースタグを選択し、私は、サーバー上の正しいキーを持っているdeploy:migratingbundle exec rake db:migrate

01 rake aborted! 
01 Rails::Secrets::MissingKeyError: Missing encryption key to decrypt secrets with. Ask your team for your master key and put it in ENV["RAILS_MASTER_KEY"] 

中にこのエラーに遭遇し、なぜレールがそれを使用して/見つけるのではないでしょうか?

答えて

7

app_name/currentのパスは、最新のCapistranoリリースのシンボリックリンクです。つまり、app_name/current/configの内容は、cap staging deployを実行するたびに変更されます。 sshを使用して手動でそのディレクトリにファイルを追加すると、その後のデプロイ時にそのディレクトリには存在しなくなります。

すべての展開で持続する構成ファイルをサーバーに追加する適切な方法は、共有ディレクトリに配置することです。具体的には、

  1. ssh(またはscp)を使用して、キーファイルをapp_name/shared/config/secrets.yml.keyに配置します。
  2. はローカルで、deploy.rbで、次の行を追加します。

    append :linked_files, "config/secrets.yml.key" 
    

cap staging deployを実行します。

+0

これは完全に機能しました!どうもありがとうございました。 – VitaminMarc

+0

@VitaminMarcは答えを受け入れることを検討してください – AlexD

関連する問題