私は、多数の Git ブランチを持つ Rails アプリに取り組んでおり、その多くには DB 移行が含まれています。注意するよう努めていますが、マスターのコードの一部が、別のブランチで削除または名前変更された列を要求することがあります。
Git ブランチを DB 状態と「結合」するための適切なソリューションは何でしょうか?
これらの「状態」は実際には何でしょうか?
データベースのサイズが数 GB の場合、それを複製することはできません。
では、マージの場合はどうなるのでしょうか?
このソリューションは NoSQL データベースにも適用できますか?
現在、MySQL、mongodb、redisを使用しています
編集:非常に重要な点について言及するのを忘れていたようです。私が興味があるのは開発環境ただし、データベースのサイズは数 GB と大きくなります。
ベストアンサー1
任意のブランチに新しい移行を追加するときは、rake db:migrate
移行の両方を実行してコミットします。そして db/schema.rb
これを実行すると、開発時に、移行セットが異なる別のブランチに切り替えて、 を実行するだけで済みますrake db:schema:load
。
これはデータベース全体を再作成すると、既存のデータは失われます。
おそらく、非常に注意深い 1 つのブランチからのみ本番環境を実行することになるため、これらの手順は適用されません (rake db:migrate
そこでは通常どおり実行します)。ただし、開発環境では、スキーマからデータベースを再作成することは大した問題ではありませんrake db:schema:load
。