2012-01-25 16 views
1

ファイルが実際に変更されていない限り、私はgit statusをきれいに保つことができるように私は現在私のdevelopment.sqlite3をGitから除外しています。gitにデータベーススナップショットを格納するための良い戦略は何ですか?

しかし、前回とは異なるデータベース(およびダミーデータ)に依存していたコードのかなり前のバージョンをチェックアウトしたいとき、コードとデータベースが同期していません。

私はdevデータベースをGitにチェックインしていないので、その環境をリセットすることは非常に難しいです。データベースを再構築するだけでは、ダミーの情報がすべて必要になるため、データベースを再構築することはできません。

幸いなことに、データベースを日々(またはタグが作成されるたびに)自動的にGitに戻すことはできますが、それでもGit .ignoreではデータベースを除外できますか?

答えて

4

データベースが正しく機能するために必要なデータがある場合や、開発に役立つダミーデータがある場合は、シードファイルを使用してそれらを定義する必要があると思います。以前のバージョンをチェックアウトするとき、あなたは最初にしてマイグレーションを実行します:あなたはデータベースの状態を反映するために行くように、あなたのシードファイルを更新した場合

rake db:seed 

、あなたはあなたができるようになりますチェックしてください何でも改訂正しいデータを生成します。

+0

残念ながら、これは実際には当てはまりません。私は 'rake db:populate'を使って同様の戦略を使いましたが、populateファイルはすぐに古くなってしまい、更新するのはあまり面白くありません。しかし、スナップショットはその日には間違いなく正しいでしょう –

+1

私はそれが "正しい"方法かもしれないと思うのが最も楽しい娯楽ではないことを理解しています。 FactoryGirlを使用してオブジェクトを作成すると、これからの苦労が多くなります。とにかく、ファクトリ定義を更新してオーバーヘッドを減らすのに役立ちます。 – Nick

関連する問題