为什么在RoR或Sinatra中使用迁移?

时间:2014-08-13 09:52:58

标签: ruby-on-rails ruby activerecord sinatra database-migration

也许是一个愚蠢的问题,没有代码,所以我不确定我是否在正确的StackExchange网站上。如果是的话,抱歉,请给我一个评论。

我开始在Sinatra中编程(直到现在只有内部网),在样本中他们几乎总是使用与activerecord的迁移,与RoR相同。 我对activerecord本身有足够的经验并且它非常有用,但我不确定为什么总是使用迁移?如果我创建一个项目,我只需创建一个SQL脚本或一个Ruby activerecord脚本,为我创建数据库,就是这样......

如果我需要其他地方的网站或脚本,我只需要执行该脚本并准备就绪。

显然我在这里失踪很多,所以谁能解释其他好处或者给我一个好的解释?

2 个答案:

答案 0 :(得分:2)

来自Rails docs

  

迁移是更改数据库架构的便捷方式   时间以一致和简单的方式。他们使用Ruby DSL   不必手动编写SQL,允许您的架构和更改   是数据库独立的。

因此,主要的两个好处是:

  1. 就像Git for db schema一样,在你进入一个有很多贡献者的中型或大型项目并且有人制造一个bobo之前你不会知道它是多么有用:)

  2. 你编写ruby代码来构建你的db模式,这样如果你决定从mysql迁移到pg,例如,你不需要打开pg手册并检查代码兼容性

  3. 更新

    在迁移的api文档中,你会发现许多不错的用例(说实话我不知道其中的一半)...查看它(http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

答案 1 :(得分:1)

为数据库构建创建脚本非常棒,提供了两件事:

  1. 所有数据库部署都在计算机上
  2. 第一次完全正确地获取数据库模式
  3. 在我们现代敏捷的环境中,我们不仅不相信大于几行代码的项目,我们也不鼓励有志于此。

    Active Record的迁移提供了一种以增量方式描述数据库的方法。每个"迁移"定义如何将其功能添加到数据库("升级"),以及如何在必要时删除它们("降级")。

    在运行迁移时,除了实际运行脚本之外,Active Record还会维护自己的表(schema_migrations),以记住哪些迁移已应用于数据库,哪些正在等待。

    这使您可以在开发数据库的同时构建数据库。它还有助于团队合作,因为每个团队成员都会开发自己的迁移,并且积极记录"缝合"一切都在一起,所以你不必维护一个单一的创作脚本。