清除旧的Rails迁移文件是个好主意吗?

Sim*_*tti 28 ruby migration activerecord ruby-on-rails

我已经运行了一个大型Rails应用程序超过2年,而且,我的ActiveRecord迁移文件夹日复一日地发展到150多个文件.

存在非常旧的模型,在应用程序中不再可用,仍在迁移中引用.我想删除它们.

你怎么看?您是否经常从代码库中清除旧迁移?

小智 14

一旦我点击主要网站发布,我就会将迁移推广到一个并重新开始.一旦迁移版本数量增加到75左右,我就会觉得很脏.

  • 你怎么把它们合二为一?手动? (5认同)
  • @AlisonR. - 当你提问时不确定这是否属实,但在Rails 3中你可以复制`schema.rb`. (4认同)

use*_*234 14

Rails 4 Way第177页:塞巴斯蒂安说......

一个鲜为人知的事实是,您可以删除旧的迁移文件(同时仍保留较新的迁移文件)以使db/migrate文件夹保持可管理的大小.您可以将较旧的迁移移动到 db/archived_migrations文件夹或类似的东西.修改迁移文件夹的大小后,使用该rake db:reset任务(重新)创建数据库db/schema.rb并将种子加载到当前环境中.

  • 这是每个人都想读的答案 (2认同)

Fuz*_*ulz 7

就我个人而言,我喜欢让迁移文件保持整洁。我认为一旦您将所有更改推送到产品中,您应该真正考虑归档迁移。我遇到的唯一困难是当 Travis 运行时它会运行 a db:migrate,所以这些是我使用的步骤:

  1. 将历史性迁徙从/db/migrate/移至/db/archive/release-x.y/

  2. 使用目录中上次运行迁移的版本号手动创建一个新的迁移文件/db/archive/release-x.y,并将描述更改为类似from_previous_version. 使用旧版本号意味着它不会在您的产品计算机上运行并且会出现混乱。

  3. schema.rb从该部分复制内容ActiveRecord::Schema.define(version: 20141010044951) do并粘贴到更改日志change的方法中from_previous_version

  4. 检查所有这些,罗伯特应该是你父母的兄弟。

唯一的其他考虑因素是您的迁移是否创建任何数据(我的测试场景包含它们自己的所有数据,所以我没有这个问题)

  • 特拉维斯:https://travis-ci.org/ 鲍勃是你叔叔:https://en.wikipedia.org/wiki/Bob%27s_your_uncle (3认同)

Art*_*jev 6

我偶尔会清除所有已在生产中应用的迁移,我发现至少有两个原因:

  • 更易于管理的文件夹:更容易发现新的迁移。
  • 更清晰的文本搜索结果:项目中的全局文本搜索不会导致大量无用的匹配,因为当有人添加或删除某些列(无论如何都不再存在)时进行了 3 年前的迁移。


sam*_*uil 5

它们相对较小,所以我会选择保留它们,只是为了记录。

您应该在不引用模型或应用程序其他部分的情况下编写迁移,因为它们会再次困扰您;)

查看这些指南:

http://guides.rubyonrails.org/migrations.html#using-models-in-your-migrations