我的文件config/secrets.yml
必须在共享文件夹中的远程服务器中。它不在我的 git repo 中,所以它没有像其他常规文件一样更新。
我不知道第一次如何生成文件。
到目前为止,我所做的是每次部署时创建一个符号链接
run "ln -nfs #{shared_path}/config/secrets.yml #{release_path}/config/secrets.yml"
哪个将在每次部署中“更新”文件,但第一次?secret.yml
第一次如何生成?
我的文件config/secrets.yml
必须在共享文件夹中的远程服务器中。它不在我的 git repo 中,所以它没有像其他常规文件一样更新。
我不知道第一次如何生成文件。
到目前为止,我所做的是每次部署时创建一个符号链接
run "ln -nfs #{shared_path}/config/secrets.yml #{release_path}/config/secrets.yml"
哪个将在每次部署中“更新”文件,但第一次?secret.yml
第一次如何生成?
您必须添加到您的 .gitignore 文件中:
/config/secrets.yml
上限任务:
task :symlink_config, roles: :app do
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
run "ln -nfs #{shared_path}/config/secrets.yml #{release_path}/config/secrets.yml"
end
after "deploy:finalize_update", "deploy:symlink_config"
共享文件夹中的 .yml 文件我通常自己创建。
如果您使用 capistrano v3.x,您可以轻松地使用:linked_files
配置变量来实现此目的。
您可以安全地添加config/secrets.yml
和.gitignore
使用 capistrano 的:linked_files
配置变量。
capistrano 通常会config/database.yml
在config/secrets.yml
您cap install
. 您只需取消注释该行,如下所示:
set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')
关于如何secrets.yml
第一次生成文件(当然这是一次性任务),您必须运行rake secret
并将从中生成的密钥放入文件中。它看起来像这样:
development:
secret_key_base: <some alphanumeric hash>
some_key: 338a3312d82
some_secret: f5d9c3214e7b
other_environment: development
other_password: password
production:
secret_key_base: <the key generated with `rake secret`>
some_key: 338a3312d82
some_secret: f5d9c3214e7b
other_environment: development
other_password: password