Ruby on rails 崩溃旧rails迁移是个好主意吗?

Ruby on rails 崩溃旧rails迁移是个好主意吗?,ruby-on-rails,migration,Ruby On Rails,Migration,到目前为止,我正在开发的rails应用程序有大约35次迁移。由于该应用程序是作为一个实验开始的,所以在迁移过程中,当我在不同的想法之间来回移动时,会有相当数量的无意义的搅动 将迁移1-35折叠为一次迁移是否有任何缺点?我计划通过让第一次迁移像现在一样加载模式并删除所有以前的迁移来实现这一点 我是目前唯一一个参与这个项目的人,如果这有什么不同的话。我会让他们留在身边。不要担心每次新开发人员签出项目时都必须运行大量迁移。他总是能跑 rake db:schema:load 这比跑步快得多 rake

到目前为止,我正在开发的rails应用程序有大约35次迁移。由于该应用程序是作为一个实验开始的,所以在迁移过程中,当我在不同的想法之间来回移动时,会有相当数量的无意义的搅动

将迁移1-35折叠为一次迁移是否有任何缺点?我计划通过让第一次迁移像现在一样加载模式并删除所有以前的迁移来实现这一点


我是目前唯一一个参与这个项目的人,如果这有什么不同的话。

我会让他们留在身边。不要担心每次新开发人员签出项目时都必须运行大量迁移。他总是能跑

rake db:schema:load
这比跑步快得多

rake db:migrate

如果您的代码处于源代码控制之下(您的代码确实处于源代码控制之下,不是吗?),那么我认为这没有什么实际的危害,前提是您接受回滚模式更改将需要恢复旧迁移或全新迁移。在确定任何事情之前,请确保您理解这些含义并接受它们

您当前的schema.rb可以构成新的单一迁移的基础,该迁移将启动一个新的集合


请注意,如果您在现有迁移、静态数据加载(例如)和/或可能的后续转换中有数据操纵操作,那么这些操作将需要在某个地方进行处理。这是我几次被绊倒的事情…

如果迁移所做的只是修改表结构,我就不必担心了

但是请记住,有些迁移会添加数据—我有一些迁移会在数据库中添加管理员帐户和其他固定数据—模式不会提供这些信息

请注意,执行迁移操作是个坏主意,因为我在部署中不使用迁移。因此,在一段时间内,折叠迁移可能是一个好主意,可以将这些数据种子迁移转移到单独的rake任务中

在回顾中——我重复了已经提出的观点<代码>rake db:迁移版本-1


[我把注意力从文字上移开归咎于令人分心的新动画徽标]

有时迁移可能会使用不再存在的模型或创建表,然后再销毁它们,浪费宝贵的CPU时间。最好将其全部编译到db/schema.rb中,并让您的开发人员运行
rake db:schema:load

,对于那些像我一样在搜索将应用程序重置回其原始状态的方法时找到此答案的人,下面是要做的:

rm db/migrations/*
rake db:drop
rake db:schmea:dump

如果您刚刚启动了一个应用程序,并决定从头开始重新构建它,而不丢失所有文件,则此功能非常有用。

没有什么害处,而且在确实需要运行迁移时,折叠迁移是一种很好的做法,有助于提高性能。这现在是Rails的schema.rb的一部分:

# Note that this schema.rb definition is the authoritative source for your
# database schema. If you need to create the application database on another
# system, you should be using db:schema:load, not running all the migrations
# from scratch. The latter is a flawed and unsustainable approach (the more migrations
# you'll amass, the slower it'll run and the greater likelihood for issues).
请注意,正如@mike woodhouse所说,“请注意,如果在现有迁移、静态数据加载和/或可能的后续转换中有数据操纵操作,那么这些操作将需要在某处处理。”

但无论如何,您都不应该在迁移中执行这些操作:) --查德