2017-05-22 174 views
2

我試圖部署到與capistrano的分段環境。 我已經設置了我的加密祕密並在開發中進行了測試,並且祕密似乎可用。我已經爲read_encrypted_secrets = true設置了登臺環境配置。我的密鑰文件被git忽略。我已將ssh登錄到我的臨時環境中,並將secrets.yml.key置於app_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

這工作_perfectly_!非常感謝你。 – VitaminMarc

+0

@VitaminMarc請考慮接受答案 – AlexD