我的文件config/secrets.yml
必须位于共享文件夹中的远程服务器中。它不在我的git repo中,所以它没有像其他常规文件那样更新。
我不知道第一次生成文件的方式。
到目前为止我所做的是每次使用
部署时创建一个符号链接run "ln -nfs #{shared_path}/config/secrets.yml #{release_path}/config/secrets.yml"
将在每次部署中“更新”文件,但第一次?如何第一次生成secret.yml
?
答案 0 :(得分:7)
您必须添加到.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文件我通常是自己创建的。
答案 1 :(得分:0)
如果您使用的是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