2011-11-10 4 views
5

schema.rbを手動で分割する以外に、rails dbの移行ファイルをテーブルごとに1つのファイルにマージする良い方法はありますか?db/migrationファイルのマージ

マイグレーションファイルのほとんどは開発時に作成されたものであり、実際のデータ変更を表していません。歴史的な理由から、それらのファイルはソース管理システム上で引き続きアクセス可能です。私はこれらの不必要なファイルを保管することに不快感を感じます。

答えて

-4

気にしないでください。古い移行ファイルは何の害もなく、メンテナンスが容易になる可能性があります。それらをそのまま残す。

+0

マイグレーションが実際のデータ変更を表す場合にのみ、メンテナンスが容易になりますが、そうではありません。 – guiding5

+0

移行ファイルは*スキーマ*の変更を表すべきであり、データの変更は反映されません。削除したいサンプルの移行を投稿できますか? –

+0

関連性のない多数の列を削除し、不要な索引、列の名前変更などを取り除きます。 – guiding5

13

まあ、あなたはきれいなスタートをしたいと思うかもしれません。最初のバージョンのリリースではプロジェクト開発モードになっていますが、すべての個別の移行ファイルを必要としません。彼らは明らかに傷つけることはできません。

基本的にはこれが可能です。

最初にスキーマとデータをバックアップします。

db/schema.rbには、スキーマの最新バージョンが含まれている(または含まれている)必要があります。そうでない場合は、

rake db:schema:dump 

移行フォルダを削除できます。

は、次に実行します。

rake db:drop 
rake db:schema:load 

を最後のコマンドは、DB/schema.rbを実行し、新しいスキーマを作成します。これにより、データベースの最終バージョンが表示されます。

ショーデシベルタスク

すくい-Tデシベル

+0

rakeは「タスク 'schema:drop'を構築する方法を知らない」と述べています。私はRuby 1.9.3とレールを使用しています。3.2.9 – gfreezy

+0

申し訳ありませんがタイプミスです。私はそれを修正しました(rake db:drop) – Roger

0

あなたが一つにマイグレーションにすべての歳をマージするSquasher宝石を使用することができます。

関連する問題