開発初期はdatabase dropとcreateしてデータベースを変更しがちだけどオーバーヘッドが大きい

本番リリースする前のアプリを開発していて、カラム追加とか変更をしたくなった時
(カラム変更するマイグレーションファイルをジェネレイトしないで)
create_tableを書いてるマイグレーションファイルを直に修正して

$ rake db:drop; rake db:create; rake db:migrate

をしてるひと多いんじゃないかと思う。

これやると、新しいマイグレーションファイルを保存する必要ないしわかりやすいんだけど、
当然ながらテストで作成したレコード全部なくなるし、初期データを大量にインポートしている場合セットアップにすごく時間かかる。
そして回転遅くなってそのうちやる気なくなって失職する。

失職は避けたいので最近↑みたいにするのやめて↓こうした。
ファイル名のタイムスタンプが一番新しくなるよう末尾数字を変えて既存マイグレーションファイルをコピーする。
その新しいマイグレーションファイルにadd_columnとかやりたいこと書いて普通にmigrateする。
db/schema.rbに書いてる現在のバージョンが更新されているので、その行をgit -p checkoutとかでmigrate前に戻す。
さっき作成したマイグレーションファイルを削除してcreate_tableが書いてるマイグレーションファイルを修正する。おしまい。
レコード失わないしマイグレーションファイル増えないし幸せ。

それとステージング環境作るとこういう事できなくなるので100回くらい作ってくれと依頼されるまでステージングは作らないほうがいいとも思った。