Mik*_*use 45 ruby migration activerecord ruby-on-rails
当我浏览应用程序*(s)的迭代时,我会累积迁移.截至目前,有48个这样的文件,跨越大约24个月的活动.
我正在考虑把我的电流schema.rb当作基线.
我还在考虑删除(当然还有源代码控制)现有的迁移,并从我当前的架构中创建一个漂亮的新单一迁移?迁移往往喜欢符号,但rake db:schema:dump使用字符串:我应该关心吗?
这看起来合情合理吗?如果是这样,这种练习在什么样的时间间隔才有意义?如果没有,为什么不呢?
我是否错过了一些(耙?)任务可以为我做这个?
* 就我而言,所有应用程序都是基于Rails的,但任何使用ActiveRecord迁移的应用程序似乎都适合这个问题.
ndp*_*ndp 36
是的,这是有道理的.有一种巩固迁移的做法.为此,只需将当前架构复制到迁移中,然后删除所有早期迁移.然后,您需要管理的文件更少,测试可以更快地运行.您需要小心这样做,特别是如果您在生产中自动运行迁移.我通常会替换一个我知道每个人都使用新架构运行的迁移.
其他人的方法略有不同.
在我们进行了100多次迁移之前,我一般都没有这样做,但是经过几个月的开发,我们可以做到这一点.然而,随着项目的成熟,迁移的次数越来越少,因此您可能不必再次进行迁移.
这违反了最佳做法:一旦您检入迁移到源代码管理,请不要更改它.如果一个中存在错误,我会做一个罕见的例外,但这种情况非常罕见(100个中可能有1个).原因是,一旦他们出现在野外,有些人可能会经营它们.它们被记录为在db中完成.如果您更改它们并签入新版本,其他人将无法获得更改的好处.您可以要求人们回滚某些更改并重新运行它们,但这会破坏自动化的目的.经常做,它变得一团糟.最好不要管它.
我认为有两种迁移:
你在设计/开发过程中所做的那些,因为你改变了对数据库应该如何的想法;
你在发布之间做的那些,反映了一些行为的变化.
我尽快摆脱了第一种迁移,因为它们并不真正代表工作版本,而是保留第二种类型,因此理论上可以更新应用程序.
关于符号与字符串:许多人认为在迁移中只应使用字符串:符号是对象的"句柄",不应用于表示名称(在本例中为列和表名).这只是一种风格上的考虑,但让我信服,而且我不再在迁移中使用符号.
我已经读到了使用字符串的另一个观点:" ruby符号是内存泄漏 ",这意味着,当您创建符号时,它永远不会在所有应用程序生命周期中被处理掉.这对我来说似乎毫无意义,因为所有的db列都将用作Rails(和ActiveRecord)应用程序中的符号; 迁移任务也不会永远持续下去,所以我认为这一点实际上并不合理.
| 归档时间: |
|
| 查看次数: |
5311 次 |
| 最近记录: |