[2012-09-20日追記] 以下の記事の内容ですが、gemが用意されてました。

https://github.com/amfranz/capistrano_database_yml

Railsプロジェクトで、ひとりで開発している場合は除いて、.gitignoreconfig/database.ymlを追加することがよくよくあります。この場合、config/database.ymlをどこかのタイミングで作ってやらなければなりません。この対処法はこの記事で説明されてます。

概略

英語だったりするので簡単に説明をかいておきます。 前述の記事の作業を行うとcapコマンドにふたつのタスクが追加されます。

  • cap db:setup
  • cap db:symlink

db:setupshared_pathconfig/database.ymlに生成してくれます。すでにあると上書きされるので注意が必要です。 db:symlinkdb:setupで生成したconfig/database.ymlへsymlinkを貼ります。なので、#{shared_path}/config/database.yml手で編集しておけば良いということになります。

試したときに困ったことなど

記載されているコードをコピーして、capistrano_database.rbを作成するのですが、このファイルをどこに作成すべきなのか記述されていないので、lib上に作成しました。 libLOAD_PATHが通ってないのに気付かなくて迷惑をかけました。 config/deploy.rbrequire "capistrano_database"とするところをrequire "./lib/capistrano_database"として回避しました。 ところが、cucumberの実行時のオプションに--require libをつけているせいだと思いますが、cucumberの実行時に読み込まれてしまい不具合がでてしまったので、

Capistrano::Configuration.instance.load do
  ....
end

の部分を

if instance = Capistrano::Configuration.instance
  instance.load do
    ...
  end
end

のように変更して回避しました。