2017-05-22 136 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