Railsdatabase.ymlを管理する方法


82

複数の人がプロジェクトで作業していて、データベースの場所が異なる場合(特にソケット)、Railsdatabase.ymlを処理するための最良の方法は何ですか。


2
明確化:これをsvnからチェックアウトするCapistranoで動作させたいので、動作を無視しないと思います。
フィリー2009

1
Capistranoケースにさらに2つのステップを追加しました。
ジェームスA.ローゼン

回答:


160

まず、database.ymlテンプレートファイルに移動します。

Gitを使用している場合:

git mv config/database.yml config/database.yml.example
git commit -m "moved database.yml to an example file"

または、Subversionを使用している場合:

svn move config/database.yml config/database.yml.example
svn ci -m "moved database.yml to an example file"

次に、.ymlバージョンを無視します。

Gitを使用している場合:

cat > .gitignore
config/database.yml

git add .gitignore
git commit -m "ignored database.yml"

Subversionを使用している場合:

svn propset svn:ignore config "database.yml"

第三に、あなたのdatabase.ymlはどこにありますか?

script/plugin install git://github.com/technicalpickles/wheres-your-database-yml-dude

そのプラグインは、開発者が独自のローカルバージョンを作成していない場合、Rakeタスクが実行される前に開発者に警告します。 config/database.ymlます。

第4に、Capistranoデプロイタスクを設定します。

# in RAILS_ROOT/config/deploy.rb:
after 'deploy:update_code', 'deploy:symlink_db'

namespace :deploy do
  desc "Symlinks the database.yml"
  task :symlink_db, :roles => :app do
    run "ln -nfs #{deploy_to}/shared/config/database.yml #{release_path}/config/database.yml"
  end
end

5番目に、サーバーのバージョンのdatabase.ymlをアップロードします。

scp config/database.yml user@my_server.com:/path_to_rails_app/shared/config/database.yml

8
最も役立つと思う答えを「受け入れる」のが通例です(必須ではありませんが)。私はあなたが最初の受け入れのためにバッジさえもらえると思います。
ジェームズA.ローゼン

3
私の悪い-それを投票したが、小切手が見えなかった。完了し、ありがとうございます!
フィリー2009

'deploy:update_code'、 'deploy:symlink_db'の後に 'deploy:assets:precompile'、 'deploy:symlink_db'の前に変更する必要があり、それで機能しました。
joshua.paling 2013

5番目のステップを除いて、すべてが機能します。そのようなディレクトリはないと書いてありますが、そこにあります。
Sebastialonso

重要な注意点として、cat >> .gitignore代わりに使用することをお勧めします。あなたがそうでない場合は、既存のファイルを吹き飛ばすますので...
sijpkes




0

上記の回答に加えて、「database.ymlはどこにありますか?」に似たrakeタスクを作成しましたが、構成ファイルのテンプレート例を保持することができます。それをチェックしてくださいhttps//github.com/Velid/exemplify

個別の本番構成を記述し、Capistranoを介してそれらをリンクする代わりに、資格情報に環境変数を使用することもお勧めします。

password: <%= ENV['PROD_DATABASE_PASSWORD'] %>

これを行うための便利な ツール方法がたくさんあります

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.