2013-06-03 19 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構成変数を使用できます。

一般に、の場合、capistranoはconfig/database.ymlconfig/secrets.ymlのテンプレート行を配列に追加します。 (それは当然のワンタイムタスクである)、あなたはrake secretを実行し、秘密を配置する必要があります初めてsecrets.ymlファイルを生成する方法について set :linked_files, fetch(:linked_files, []).push('config/database.yml', 'config/secrets.yml')

:あなただけのように見えるその行のコメントを解除する必要がありますそのファイルから生成されたキー。

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 
関連する問題