2013-11-20 2 views
0

При использовании плагина DB Migration я столкнулся с интересным вопросом. В наших регулярных военных развертываниях мы снова и снова должны запускать определенные сценарии для обновления данных, чтобы соответствовать нашему измененному коду. Хотя мы все еще можем запускать их извне, мы пытались найти способ добавить их в качестве части процесса миграции базы данных.Grails - Вызов скриптов в DB Migration changelog

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

  1. Эти сценарии запускаются раз и навсегда, поэтому нам нужно будет менять идентификатор при каждом запуске, поскольку мы не хотим дублировать код, тем самым теряя первоначальные изменения.
  2. Мы передаем параметры этим сценариям из командной строки и по методу выше, мы должны добавить их к самим скриптам, просто вызывая проблемы с ремонтопригодностью.

Так что мой вопрос будет, есть более элегантный способ запуска внешнего Grails или заводная скрипты в сценариях переноса БДА таким образом, что каждый раз, когда нам нужно запустить файл сценарий, мы можем создать список изменений с обновить звонок и пометить его приложением.

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

Благодаря

ответ

0

Являются сценарии что-то вы могли бы добавить в bootstrap.groovy? Это, вероятно, будет самым простым. Просто используйте groovy.sql.Sql для запуска скриптов.

Другим более функциональным и гибким вариантом было бы создание службы для запуска скриптов (groovy.sql.Sql) и класса домена для отслеживания запущенных скриптов. Вы можете запустить службу в файле bootstrap.groovy, и служба может посмотреть на некоторый класс домена миграции, который вы настроили, чтобы проверить, был ли сценарий запущен. Вы даже можете зайти так далеко, чтобы обеспечить переднюю часть этого механизма, чтобы загрузить файл сценария для выполнения во время выполнения.

Позвольте мне узнать более подробную информацию о том, чего вы хотите, и я могу попытаться быть более подробным в своем ответе.

Смежные вопросы