3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsのマイグレーション番号を自分で管理してみた(ソロ開発)

3
Last updated at Posted at 2014-11-22

今回の開発(趣味開発)で、Railsのマイグレーションバージョンを手動で管理するようにしました。

migrate-versions.png

こんな感じ。


開発初期って、結構**「あー。このカラムも必要だなー…」**ってなるので。マイグレーションファイルを作った後に。

その度にいちいちrails g migration add_column ...とするのは結構面倒・・・と言うよりも**「マイグレーションファイルが大量に作られるのがうざい(そして後々見た時、量が多すぎて訳が分からない…)」**。

あと新たにDB作ったりリセットする時にすごーく時間がかかる(schema.rbに頼らずマイグレーションを行う場合)。

マイグレーションファイルの先頭番号は整数で6桁としたのですが、連番ではなく、飛び飛びで番号を書いています。

なんでかって言うと、途中にマイグレーションを**「あっ。」**って差し込んだりするからですね。「あっ」て。

通常のマイグレーション生成では完全に時系列なので起こりえないのですが、後からマイグレーションを遡って治したりするので、こういう事が起こるわけです(しかも結構がっつり外部キー追加しちゃったりする)。

そしてどうも、Rails4からなのか(昔は出来なかった気がする…)途中に差し込まれたマイグレーションがあっても、rake db:migrateで流してくれる(昔=3系の時は、一番最後のバージョンしか見てくれてなかった…気がする、記憶違い…?)。

ので、rake db:migrate:up VERSION=xxxとかイチイチ指定しなくていい。素敵!!


使ってる感じでは、悪く無いです。
マイグレーションとかも自由に遡ったり出来るし、後から見た時にもわかりやすいし綺麗。

昔のマイグレーション直した時も、何回かロールバックすればいい話だと思います(STEP=xとかで)。でも大体古いの程修正は入りにくい(仕様として固まってる)ので、そんなに大量にロールバックする事はないですね。

リリースしちゃうとこういう管理は出来ませんが、リリースするまで、及びリリースとリリースの間ではこういう運用をやってみるのも、アリだと思います。


追記: リリースする毎に一番上位の桁数上げるとかやってみようかなー。そういうのも面白いかも。
今後の運用に乞うご期待!

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?