Capistranoでリポジトリには入れたくない設定ファイルはsharedなどに置いといて、deploy時にシンボリックリンクを張るといい。

ただし、deploy:migrateタスクより先にやらないとdatabase.ymlが見つからなくてエラー。currentが出来るのはdeploy:migrateの後(deploy:symlink)なので、下記のようにcurrent_pathではなくrelease_path(/var/www/foo/20100501062159みたいなヤツ)を使いつつdeploy:migrateより前に実行する必要がある。(deploy:finalize_updateはdeploy:migrateより前にある)

# config/deploy.rb
namespace :deploy do
desc "make symlink to config file"
task :symlink_config, :roles => :app, :except => {:no_release => true} do
run "ln -s #{deploy_to}/shared/database.yml #{release_path}/config/database.yml"
run "ln -s #{deploy_to}/shared/twitter_auth.yml #{release_path}/config/twitter_auth.yml"
run "ln -s #{deploy_to}/shared/newrelic.yml #{release_path}/config/newrelic.yml"
end
after 'deploy:finalize_update', 'deploy:symlink_config'
end

同じシンボリックリンクを張るタスクだからっつってdeploy:symlinkの周辺でやるとハマる。(俺のことです)

Comments


Option