Как создать пользовательскую среду в 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' в вашем случае.