大多数Rails数据库部署讨论假设数据库有两个方面:模式,通过迁移在代码中处理,以及数据,这些数据都是用户生成的,永远不需要从测试转移到生产。那些介于两者之间的东西呢?
例如,我们有许多大多数静态表,其中包含用户可以进行的复杂调查:问题,选择,分支。我们希望能够通过我们的网络应用程序编辑这些调查,但我们希望能够在将它们推向生产之前测试登台服务器上的更改。
在Rails中处理这个问题的好方法是什么?它希望所有模型都存在于一个数据库中,当然不希望在两个数据库中存在相同的模型(具有不同的内容)?网上是否有任何良好的讨论,或任何抽象出这种功能的宝石?
我使用过大型,复杂的CMS系统,该系统有自己的多环境版本控制和部署,因此您可以将更改部署到测试系统(无需冒险链接测试和生产数据库),彻底测试,然后执行一键部署到生产。我想我正在寻找类似的东西。
答案 0 :(得分:1)
我会使用ActiveResource将所需记录从暂存环境提取到生产环境。或者,您可以创建一组名称间隔的ActiveRecord模型,以直接连接到临时数据库。无论哪种方式,实现大致相同,但ActiveResource允许更改部署细节的更大灵活性,而ActiveRecord方法需要更少的设置代码。
实际的实现代码应该相当简单 - 从分段中提取未导入的记录列表(您可能希望将生产记录映射到其源分段记录以轻松防止重复)并复制数据。
答案 1 :(得分:0)
不确定Rails但我使用的是一个名为Migraine的python脚本,它对于同步Drupal CMS的开发,登台和实时(生产)站点的数据库非常有用。有关详细信息,请参阅: