7

db:clean新しいプロジェクトを開始するとき、モデルには多くの変更があり、既存の移行を編集して実行したりdb:reset、新しい移行を作成したりするのは簡単だと思います。これは、アプリが実稼働に達していないときに行います。つまり、心配することなくデータベースをリセット/クリーンアップできます。私は単独で、または小さなチームの一員として働いています。

しかし今日、 Rails Guideで次のアドバイスに出くわしました。

既存の移行を編集することはお勧めできません。移行の既存のバージョンが既に運用マシンで実行されている場合、自分自身と同僚のために余分な作業が発生し、大きな頭痛の種になります。代わりに、必要な変更を実行する新しい移行を作成する必要があります。まだソース管理にコミットされていない (または、より一般的には、開発マシンを超えて伝播されていない) 新たに生成された移行を編集しても、比較的害はありません。

私は知りたいです:

  • 私が遭遇する可能性のある潜在的な落とし穴は何ですか?
  • これらの落とし穴は私の場合 (開発段階、ソロで作業) に当てはまりますか?
4

4 に答える 4

10

チームで作業していて、移行をコミットした場合は、NO です。

ローカル環境のみにある場合は、必要なものを修正する新しい移行を作成してください。テーブル\列を削除して、必要なことを行うことができます。

データベースをクリーンアップしてリセットすると、誰もが同じことをするか、移行しようとすると問題が発生します。

于 2012-05-30T07:59:36.390 に答える
1

私は開発モードでWebアプリに取り組んでいます。私は一人で作業していますが、移行を使用してデータベースを変更することをお勧めします。変更の跡が残るかもしれませんが、データベース構造の進化を見ることができます。長期的には、移行に関するデータベースの問題をより迅速に解決できるようになります。

于 2013-07-08T22:50:18.397 に答える
0

データベースの移行はツールです。他のツールボックスと同様に、最も重要なことは、それが何に役立つのか、どのように使用するのか、なぜそのように使用するのかを理解することです.

  • ライブ サイト: ライブ サイトでは単純に rake:db reset を使用することはできません。明らかにすべてのデータが必要だからです。
  • 共同作業: 移行の一貫性を他の開発者と維持する必要があります。彼らが (目的を問わず) データベースにデータを入力し、あなたのコードに単純に混入した場合はどうなるでしょうか。あなたは彼らの努力を完全に欺き、彼らはデータベース全体をリセットせざるを得なくなります
  • Rake db:rollback : コードを変更すると、リセットする必要があり、ロールバックを実行できなくなります。
  • これは悪い習慣です。ほとんどの場合、これを行うための丁寧な方法は、新しい移行を作成することです。新しい移行を迅速かつ効率的に作成できるように、習慣と考え方を身に付けることをお勧めします。

私は実際にそれをするなと言っているわけではありません。これらは、私が見ているようにしない理由に関する主要なポイントにすぎません。ほとんどの場合、あなたが一人でいる場合、または特にプロジェクトを作成している場合 (データベースをどのように表示/動作させたいかをすぐに理解できない場合があります。それらを直接いじるのが最も効率的かもしれません。理由を理解することが重要です。したがって、ベストプラクティスに反することをいじる前に。

于 2015-01-05T06:06:41.390 に答える