Как создать пользовательскую среду в Grails?
grails.util.Environment, определяет ряд предварительно сконфигурированных сред
- РАЗВИТИЕ
- ПРОДУКЦИЯ
- TEST
- CUSTOM
При запуске команды Grails используемая среда может быть указана с помощью флага -Denv
, например. grails run-app -Denv=test
. Вы также можете указать блок кода, специфичный для определенной среды, с помощью закрытий, таких как:
environments {
production {
grails.serverURL = "http://www.changeme.com"
}
development {
grails.serverURL = "http://localhost:8080/${appName}"
}
test {
grails.serverURL = "http://localhost:8080/${appName}"
}
}
Эти закрывающие среду замыкания могут использоваться в Bootstrap.groovy
и Config.groovy
, есть ли другие места?
Кроме того, возможно ли мне определить мою собственную среду, например. PRE_PRODUCTION
, так что он будет работать с закрытием выше и флагом -Denv
?
Наконец, можно ли использовать среду CUSTOM
с флагом -Denv
?
Ответы
Ответ 1
Эти замыкания на окружающую среду может использоваться в Bootstrap.groovy и Config.groovy, есть ли другие места?
Я так не думаю... Для других мест вам нужно будет использовать Generic Per Environment Execution
Environment.executeForCurrentEnvironment {
production {
// do something in production
}
development {
// do something only in development
}
pre_production {
// do something for your custom environment
}
}
Кроме того, возможно ли мне определить моя собственная среда, например. PRE_PRODUCTION, чтобы он работал с закрытием выше и -Denv флаг?
Да, вы должны просто объявить -Dgrails.env=pre_production
и включить блок pre_production
в Bootstrap.groovy или Config.groovy(или пользовательский блок grails.util.Environment
, как указано выше)
изменить
Как вы можете видеть в источнике Grails для среды, этот вид настраиваемой среды перечислит значение Environment.CUSTOM, а затем в Environment.executeForCurrentEnvironment
, он проверяет CUSTOM и имя настраиваемой среды
Ответ 2
Если вы создаете настраиваемую среду, вы можете использовать ее в любом месте, где используется блок environments {}
. Например, помимо Bootstrap.groovy
и Config.groovy
, вы также можете использовать его в DataSource.groovy
и даже в других файлах Config, таких как Searchable.groovy
.
Кроме того, я считаю,
Environment.currentEnvironment.name
вернет 'pre_production'
в вашем случае.
Ответ 3
-Dgrails.env = pre_production
здесь https://grails.org/wiki/Environments