Kos*_*tas 19 sql ruby-on-rails
我的rails应用程序的我的/ db文件夹中有一个development_structure.sql(rails 2.3.4,ruby 1.8.7),我不确定它到底是做什么的.
Mar*_*cus 30
这篇文章已经被我的同事用作参考,但这两个答案并不准确或信息量不足.
development_structure.sql是架构的低级转储,当您开始使用专有数据库功能时,这是必需的 - 无论您是否想要,您将在某些时候使用它们.
关于存储与否的问题,存在一些争论.这是一篇内容丰富的文章:http://www.saturnflyer.com/blog/jim/2010/09/14/always-check-in-schema-rb/.我对此的看法如下.
对于任何给定的提交,development_structure.sql的目标是使用代码同步数据库结构,而无需事先了解模式结构,也就是说,无需依赖模式的预先存在的状态来获取新的那一个.
简而言之,通过提供架构结构,无论何时更改分支/提交,都可以直接加载它并忘记它.这主要适用于动态和"拥挤"项目,其中不同的分支在底层模式结构中存在差异.
如果不存储架构结构,则需要始终在数据库中使用现有的引用架构,并在每次更改分支/提交时将其向前或向后迁移; 几个真实案例可能会使此过程效率低下(例如,当另一个分支没有您当前的某些迁移,或者某些迁移无法回滚时).
另一个问题是自动构建,它存在同样的问题,更糟糕的是,它们不能应用手动更改.
唯一的缺点是它需要一定的习惯,即每次运行迁移时都要存储它.容易说,但也容易忘记.
我不是说你不能没有develop_structure.sql - 你当然可以.但是,如果你拥有它,在更改分支/提交时,你只需要加载并忘记; 如果你不这样做,你[可]必须经过一系列手动步骤.
Aur*_*ini 22
您不应该将它添加到您的git存储库.
当您使用配置为连接mysql数据库的database.yml运行迁移时,它是由rails自动创建的文件.您可以将其视为schema.rb的替代方法
我相信你可以通过添加你的environment.rb来强制rails创建它:
config.active_record.schema_format = :sql
Run Code Online (Sandbox Code Playgroud)
当存在时,该文件用于例如:
rake db:test:clone_structure
Run Code Online (Sandbox Code Playgroud)
编辑
Ruby On Rails指南中的相关部分. http://guides.rubyonrails.org/migrations.html#schema-dumping-and-you
他们建议将其检入wiki上的源代码控制.
我个人喜欢把它搞定.我希望能够非常快速地运行所有迁移.这对我来说是一个好兆头.如果迁移变得缓慢,我觉得我不再完全控制我的环境了.迁移缓慢通常意味着我的开发数据库中有大量数据,我感觉不对.
然而,现在似乎是个人品味的问题.按照你的直觉来对待这个.
| 归档时间: |
|
| 查看次数: |
14802 次 |
| 最近记录: |