Перенести CMS / статический контент из промежуточной в производственную базу данных?

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

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

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

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


person Jay Levitt    schedule 06.07.2011    source источник


Ответы (2)


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

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

person Jeremy Weathers    schedule 06.07.2011

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

  1. Презентация
  2. Скрипт мигрени здесь
person Chintan    schedule 06.07.2011
comment
Как ни странно, мигрень была смоделирована после миграции Rails! Итак, у нас уже есть эта функция. Спасибо хоть. - person Jay Levitt; 07.07.2011