[2012-09-20日追記] 以下の記事の内容ですが、gemが用意されてました。
https://github.com/amfranz/capistrano_database_yml
Railsプロジェクトで、ひとりで開発している場合は除いて、.gitignoreにconfig/database.ymlを追加することがよくよくあります。この場合、config/database.ymlをどこかのタイミングで作ってやらなければなりません。この対処法はこの記事で説明されてます。
概略
英語だったりするので簡単に説明をかいておきます。
前述の記事の作業を行うとcapコマンドにふたつのタスクが追加されます。
- cap db:setup
- cap db:symlink
db:setupはshared_pathにconfig/database.ymlに生成してくれます。すでにあると上書きされるので注意が必要です。
db:symlinkは db:setupで生成したconfig/database.ymlへsymlinkを貼ります。なので、#{shared_path}/config/database.yml手で編集しておけば良いということになります。
試したときに困ったことなど
記載されているコードをコピーして、capistrano_database.rbを作成するのですが、このファイルをどこに作成すべきなのか記述されていないので、lib上に作成しました。
libはLOAD_PATHが通ってないのに気付かなくて迷惑をかけました。
config/deploy.rbに require "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
のように変更して回避しました。