2017-05-22 13 views
2

카피 스트라 노를 사용하여 준비 환경에 배포하려고합니다. 암호화 된 암호를 설정하고 개발시 테스트를 거쳤으며 암호가 사용 가능한 것으로 보입니다. read_encrypted_secrets = true에 대한 준비 환경을 설정했습니다. 내 비밀 키 파일은 무시됩니다. 스테이징 환경에 ssh'ed를 넣고 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 경로는 최신 카피스트라 노 릴리스의 심볼릭 링크 일뿐입니다. 즉, 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