У меня возникла проблема с тем, чтобы контексты изменений Liquibase играли хорошо в моем приложении Grails. У меня есть набор изменений, которые я хотел бы запускать только в контексте «теста». Тем не менее, они выполняются каждый раз. Я думаю, что у меня проблема конфигурации.Контексты Liquibase с Grails
В документации Liquibase указано, что вам просто нужно добавить атрибут context = "test" в ваш changeSet. Для моего доказательства концептуального теста я собираюсь создать вставку записи пациента, которую я хочу вставить в Test, но не в мою локальную среду разработки. Моя ревизия имеет контекст добавлен:
<changeSet id="v1.1-garbage-1" author="Eric" context="test">
<insert tableName="patient">
[...]
</insert>
</changeSet>
И тогда в моем файл DataSource.groovy я определяю мои среды:
environments {
development {
dataSource {
dbCreate = "create"
jndiName = "java:comp/env/jdbc/mydatabasename"
}
}
test {
dataSource {
dbCreate = "create"
url = "jdbc:h2:mem:testDb;MVCC=TRUE;LOCK_TIMEOUT=10000"
}
}
[...]
Так у меня есть два сред, разработка и тестирование. Тогда в моем Config.groovy, я создал Grails databasemigration плагин только контекст «развитие» (для этого доказательства концепции):
// Database Migration plugin
grails.plugin.databasemigration.updateOnStart = true
grails.plugin.databasemigration.updateOnStartFileNames = ['changelog.xml']
grails.plugin.databasemigration.autoMigrateScripts = ['RunApp', 'TestApp']
grails.plugin.databasemigration.changelogFileName = "changelog.xml"
grails.plugin.databasemigration.development.updateOnStartContexts = ['development']
В этой последней строке, как я понимаю, я говорю плагин databasemigration, чтобы установить контексты «развития» в «развитие», поэтому, когда Liquibase выполняет, он не должен запускать мой набор изменений выше, потому что он определен в контексте «теста».
Однако, когда я запускаю приложение, мой набор изменений выполняется. Что я испортил или пропустил в настройке?