Передача CMS / статического контента из рабочей базы в производственную базу данных? - PullRequest
1 голос
/ 06 июля 2011

В большинстве обсуждений развертывания базы данных Rails предполагается, что есть две стороны базы данных: схема, которая обрабатывается в коде посредством миграции, и данные, которые все генерируются пользователем и никогда не нуждаются в переходе от тестирования к производству.Как насчет того, что находится между ними?

Например, у нас есть несколько в основном статических таблиц, которые содержат сложные опросы, которые могут проводить наши пользователи: вопросы, выбор, ветвление.Мы хотим иметь возможность редактировать эти опросы с помощью нашего веб-приложения, но мы хотим иметь возможность тестировать изменения на промежуточном сервере, прежде чем отправлять их в производство.

Какой хороший способ справиться с этим в Rails,который хочет, чтобы все модели существовали в одной базе данных, и, конечно, не хотел бы, чтобы одна и та же модель (с разным содержанием) существовала в двух базах данных?Есть ли какие-нибудь хорошие дискуссии в Интернете или какие-либо жемчужины, которые абстрагировали этот тип функциональности?

Я работал с большой, сложной системой CMS, которая имела свой собственный контроль версий и развертывание нескольких сред, так что выможет развернуть ваше изменение в тестовой системе (без рискованного связывания тестовой и производственной баз данных), тщательно протестировать его, а затем выполнить развертывание одним нажатием в рабочей среде.Я думаю, что я ищу что-то подобное в меньшем масштабе.

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Я бы использовал ActiveResource для загрузки нужных записей из промежуточной среды в рабочую. В качестве альтернативы вы можете создать набор моделей ActiveRecord с пространством имен для прямого подключения к промежуточной базе данных. В любом случае реализация примерно одинакова, но ActiveResource обеспечивает большую гибкость при изменении сведений о развертывании, а метод ActiveRecord требует меньше кода установки.

Фактический код реализации должен быть довольно простым - вытащить список не импортированных записей из промежуточной стадии (вы, вероятно, захотите сопоставить производственные записи с их исходными промежуточными записями, чтобы легко предотвратить дублирование) и скопировать данные.

0 голосов
/ 06 июля 2011

Не уверен насчет Rails, но я использую один скрипт на Python под названием Migraine, который полезен для синхронизации баз данных разработки, промежуточных и живых (производственных) сайтов для Drupal CMS.За дополнительной информацией обращайтесь:

  1. Презентация
  2. Получить сценарий Мигрень здесь
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...