5

我的文件config/secrets.yml必须在共享文件夹中的远程服务器中。它不在我的 git repo 中,所以它没有像其他常规文件一样更新。

我不知道第一次如何生成文件。

到目前为止,我所做的是每次部署时创建一个符号链接

run "ln -nfs #{shared_path}/config/secrets.yml #{release_path}/config/secrets.yml"

哪个将在每次部署中“更新”文件,但第一次?secret.yml第一次如何生成?

4

2 回答 2

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 文件我通常自己创建。

于 2013-06-03T03:15:48.253 回答
0

如果您使用 capistrano v3.x,您可以轻松地使用:linked_files配置变量来实现此目的。

您可以安全地添加config/secrets.yml.gitignore使用 capistrano 的:linked_files配置变量。

capistrano 通常会config/database.ymlconfig/secrets.ymlcap 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
于 2016-12-09T08:10:05.400 回答