如何清理旧的Rails迁移文件

随着Rails应用程序的增长,你的db/migrate文件夹也会增长。经过多年的开发,你可能有数百个不再相关的迁移文件。

问题

旧迁移可能会导致问题:

  • 在新安装时减慢rails db:migrate的速度
  • 让新开发人员感到困惑
  • 可能引用已不存在的模型或列

解决方案

Rails提供了一种合并迁移的方法:

  1. 确保你的schema是最新的
rails db:migrate
  1. 验证你的schema.rb或structure.sql是否正确

检查db/schema.rb是否准确地表示你当前的数据库。

  1. 删除旧的迁移文件

你可以安全地删除已在所有环境中运行的迁移:

rm db/migrate/2020*.rb
rm db/migrate/2021*.rb
  1. 更新schema版本

如果需要,在schema.rb中更新schema版本。

最佳实践

  • 只删除比最旧的生产备份更旧的迁移
  • 确保所有环境都已运行这些迁移
  • 考虑创建一个”合并”迁移用于文档记录

这样可以保持代码库的整洁,同时维护清晰的数据库历史记录。