Рейк-стратегия, внедрение DotNet - PullRequest
0 голосов
/ 28 марта 2009

Когда читал о Rails и играл с ним в прошлом году, одним из инструментов, который произвел на меня наибольшее впечатление, был Rake. Система управления версиями базы данных, которая поддерживает идентичность интегрированной базы данных dev прямо в сборке ... что-то подобное сделает жизнь намного проще (и безопаснее)!

Однако, одна из вещей, которую я не смог понять: Как вы переносите эти изменения на свои рабочие серверы, когда у вас фактически нет доступа к рабочим серверам? У нас есть несколько серверов по всей стране, где приложение устанавливается / обновляется с помощью пакета установки.

Примечание. Этот вопрос больше относится к стратегии, чем к технологиям Rails / Rake. Мы не используем рельсы, мы используем .Net. Но если мне удастся выяснить этот сценарий публикации, то, похоже, будет несколько инструментов Migratordotnet, являющихся одним , которые могут позволить нам сделать нечто подобное.

Ответы [ 2 ]

1 голос
/ 08 апреля 2009

Как вы, наверное, знаете, стандартным способом Rails для запуска миграций в рабочей среде является Capistrano . У него есть задача deploy: migrations, которая запускает миграции на удаленных серверах с использованием ssh.

Возможно, вы сможете адаптировать Capistrano к тому, что вы хотите. По сути, это гибкий способ запуска команд на группах удаленных серверов. Вам необходимо установить Ruby на машине, которую вы развертываете с , чтобы использовать ее, но не на машинах, с которых вы развертываете на .

Лучшим вариантом может быть написание пользовательской задачи Capistrano для загрузки setup.exe, ее запуска, а затем запуска миграции (возможно, с использованием Migrator.NET).

1 голос
/ 28 марта 2009

Возможно, вы сможете использовать что-то вроде SQL Gate в Red Gate для создания сценариев различий схемы, которые позволят вам автоматизировать процесс обновления базы данных. Я использовал инструмент вручную для внесения таких изменений и легко мог создать программу, которая будет запускать эти обновления как часть процесса обновления. Однако, если бы я собирался автоматизировать это, я разработал бы что-то, что позволило бы мне проверить, какая версия схемы была на месте, и запустить необходимые сценарии в правильном порядке, чтобы вызвать нужную версию.

...