Rails - 数据库模式的权威来源?

ker*_*lin 1 ruby-on-rails database-schema rails-migrations

我有Rails应用程序,每隔一段时间,当我带来新的开发人员时,他们惊叹他们应该能够通过运行迁移的整个历史记录在他们的开发环境中生成当前的数据库模式.我个人认为迁移不是您架构的权威来源.现在我们所做的是将具有当前模式的DB的生产副本加载到开发机器上.并且,从那里,可以通过增量迁移来维护模式.

所以我的问题是:

  • Rails项目上的架构的权威来源是什么?
  • 什么现在被认为是维护数据库架构的最佳实践方法?

MDa*_*ubs 6

我不认为迁移是您的架构的权威来源.迁移功能非常强大但可选.一些开发人员使用替代工作流,尤其是在DBA坚持强引用完整性和DBMS强制约束的环境中.我建议查看官方的RoR迁移指南以获取更多信息.该db/schema.db(或db/{env}_structure.sql)文件对您的架构的权威来源.随着项目的老化,许多开发人员将清除旧的迁移,因此运行每次迁移不一定会生成有效的数据库.经历数百次迁移还需要很长时间.Rails使用schema.db(或sql dump文件)来构建测试数据库,当然还有在运行时,rake db:setup这是为应用程序创建新数据库的推荐方法.

类似的是,rake db:setup无论迁移如何,都应始终生成有效的数据库.开发人员可以使用它来创建新环境,Rails使用它来运行测试.

http://guides.rubyonrails.org/migrations.html#schema-dumps-and-source-control