2013-06-03 101 views
5

我有文件config/secrets.yml,它必須位於共享文件夾的遠程服務器中。它不在我的git repo中,所以它不會像其他常規文件那樣更新。如何將文件複製到capistrano共享文件夾

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

我做了什麼,直到那一刻是我每次與

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

將在每個「更新」文件部署,但第一次部署創建符號鏈接?第一次如何生成secret.yml

回答

6

你必須添加到您的.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我通常創建它自己。

+0

嗯,'我'部分是我所問的,我必須創建自己的文件? – juanpastas

+0

@juanpastats,是的,你必須創建該文件,像'scp /config/secrets.yml you @ yourserver:/ var/www/yourapp/shared/config/secrets.yml'就可以做到這一點...... – Intentss

0

如果您使用的是capistrano v3.x,則可以使用:linked_files配置變量輕鬆實現此目的。

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

當您使用cap install時,capistrano通常會將包含config/database.ymlconfig/secrets.yml的模板行添加到數組中。你只需要取消對線,看起來像: 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 
相關問題