1

大多数关于 Rails 数据库部署的讨论都假设数据库有两个方面:模式,通过迁移在代码中处理,以及数据,这些都是用户生成的,不需要从测试转移到生产。介于两者之间的东西呢?

例如,我们有许多主要是静态的表格,其中包含我们的用户可以进行的复杂调查:问题、选择、分支。我们希望能够通过我们的网络应用程序编辑这些调查,但我们希望能够在将它们推送到生产之前在登台服务器上测试更改。

在 Rails 中处理这个问题的好方法是什么,它希望所有模型都存在于一个数据库中,当然不希望同一个模型(具有不同内容)存在于两个数据库中?网上有没有很好的讨论,或者有什么宝石抽象出这种功能?

我使用过一个大型、复杂的 CMS 系统,它有自己的多环境版本控制和部署,因此您可以将更改部署到测试系统(没有风险地链接测试和生产数据库),彻底测试它,然后一键部署到生产环境。我想我正在寻找类似的小规模的东西。

4

2 回答 2

1

我会使用 ActiveResource 将所需的记录从暂存环境中提取到生产环境中。或者,您可以创建一组命名空间的 ActiveRecord 模型以直接连接到临时数据库。无论哪种方式,实现大致相同,但 ActiveResource 允许更灵活地更改部署细节,并且 ActiveRecord 方法需要更少的设置代码。

实际的实现代码应该相当简单 - 从暂存中提取未导入记录的列表(您可能希望将生产记录映射到其源暂存记录以轻松防止重复)并复制数据。

于 2011-07-06T16:40:14.700 回答
0

不确定 Rails,但我正在使用一个名为 Migraine 的 python 脚本,它对于同步 Drupal CMS 的开发、登台和实时(生产)站点的数据库很有用。有关更多信息,请参阅:

  1. 介绍
  2. 在此处获取偏头痛脚本
于 2011-07-06T16:25:32.463 回答