継続して開発していくプロジェクトでは、データベースの変更も繰り返されることとなります。そうすれば、マイグレーションファイルも多量に存在することとなってしまいます。
マイグレーションは便利、だけど
マイグレーションを使えば、データベース構造もソースコードと一貫して管理できるようになるので、反映忘れやミスなどが軽減できて便利です。
ただ、Railsの標準ではマイグレーションファイルをdb/migrate/
の直下に作ることとなっていて、長期間が過ぎたプロジェクトではマイグレーションファイルだけで数百個、ということになってしまって、エディタのリストで見たときもえんえん過去のマイグレーションが並んでいて、目的のものが見つからない、なんてことになってしまいます。
意外とデフォルト機能で対応できた
だからといって削除するわけにも行かないし、どうしたものだろうと悩んでいたのですが、ActiveRecordのソースを見たことで、悩みはあっけなく解決しました(4.2のコード)。
activerecord/lib/active_record/migration.rb
def migration_files(paths)
Dir[*paths.flat_map { |path| "#{path}/**/[0-9]*_*.rb" }]
end
ということで、パスに/**/
が入っている、つまり指定フォルダ以下ならどこに置いてもいいのでした。速攻でdb/migrate/
以下にサブフォルダを作って、分類格納する形に切り替えたことで、問題は一件落着となりました。