Grails — вызов сценариев в журнале изменений миграции БД

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

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

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

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

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

Спасибо


person bythe4mile    schedule 20.11.2013    source источник


Ответы (1)


Можно ли добавить скрипты в bootstrap.groovy? Это, наверное, будет самым простым. Просто используйте groovy.sql.Sql для запуска скриптов.

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

Дайте мне знать больше деталей о том, что вы хотите, и я могу попытаться быть более подробным в моем ответе.

person Brandon Wagner    schedule 24.01.2014