Capistranoでconfig/database.yml等を後からセットする
Capistranoはsvn等のscmからチェックアウトしてdeployするようになってます。
なので、Subversionにdatabase.ymlを含めてなかったりignoreしてると、deployするときに困ります。
こういう場合はどうするかというと、後からセットするようなタスクを書けばいいわけですが、例えばcap deploy:updateしてdatabase.ymlを後からコピーなりシンボリックリンクを貼るという事をする為に、deploy:update相当をまるっと定義し直すというのは無駄ですよね。
で、そこらへんはやっぱり考慮してあって、beforeとafterというフックが用意されています。
では、どのタスクにフックをかけるかですが、deploy時に使うタスクを確認すると、symlinkというcurrentにシンボリックリンクを貼るタスクが大体中で呼ばれています。
なので、私はsymlinkにフックをかけました。
config/deploy.rb
task :after_symlink do run "ln -s /home/user_account/config/rails_appname/database.yml #{release_path}/config/database.yml" end
サーバのどっかにおいたdatabase.ymlから単に最新リリースにシンボリックリンク貼ってるだけです。