Capistranoでconfig/database.yml等を後からセットする

Capistranosvn等の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から単に最新リリースにシンボリックリンク貼ってるだけです。