当我在应用程序的迭代中移动时,我积累了migrations.到目前为止,有48个这样的文件,跨越了大约24个月的活动.

我正在考虑以我目前的schema.rb分作为基准.

我还考虑删除(当然要受源代码控制)现有的迁移,并从我当前的模式中创建一个漂亮的新迁移?迁移往往喜欢符号,但rake db:schema:dump使用字符串:我应该在意吗?

这看起来合理吗?

我是不是错过了一些(耙子?)能帮我完成的任务?

*在我的例子中,所有应用程序都是基于Rails的,但任何使用ActiveRecord迁移的应用程序似乎都符合这个问题.

推荐答案

是的,这是有道理的.有一种整合迁移的做法.要做到这一点,只需将当前模式复制到迁移中,并删除所有早期的migrations.这样你就可以管理更少的文件,测试运行得更快.You need to be careful doing this,尤其是当您的迁移在生产环境中自动运行时.我通常用新的模式替换我知道每个人都运行过的migrations.

其他人做这件事的方式略有不同.

一般来说,在我们进行了100多次迁移之前,我都没有这样做过,但经过几个月的开发,我们可以做到这一点.然而,随着项目的成熟,迁移的频率越来越低,因此您可能不必再次进行migrations.

这确实违背了最佳实践:一旦签入到源代码管理的迁移,就不要更改它.如果其中有一个bug,我会做出一个罕见的例外,但这是非常罕见的(百分之一可能).原因是,一旦它们在野外,一些人可能已经把它们赶走了.它们被记录为已在数据库中完成.如果您更改了它们并签入了新版本,其他人将无法从更改中获益.您可以要求人们回滚某些更改,并重新运行它们,但这违背了自动化的目的.如果经常这样做,事情就会变得一团糟.最好别管它.

Ruby-on-rails相关问答推荐

如何测试自定义路由?

在VP中部署rails 7和nginx

ActiveRecord::声明在类别中无效#new

Rails:比枚举更惯用的排序/可比较列表方法?

Ruby on Rails 更新触发了 Mailer 函数中的 ArgumentError

组织和/或存储我一直在 RSpec 中使用的模拟对象的最佳方式是什么?

Rails simple_form 元素与数据-... 刺激的属性?

Rails 控制台 - 更新 Gem 后的弃用通知

Rails:关于yields

撬Ruby 如何重新加载?

Rails - 获取没有 GET 参数的当前 url

使用回形针调整图像大小

关于在不适合任何地方的 Rails 应用程序中放置类的指南

Ruby on Rails 中的MySQL 服务器已经消失

Rails 3 SSL 路由从 https 重定向到 http

导轨链接到:远程

如何对这个哈希数组进行分组?

Post.all.map(&:id) 是什么意思?

从 ActiveRecord 对象中提取两个属性的快捷方式?

如何为 rspec 设置 ENV 变量?