определить пользовательскую среду Grails - PullRequest
3 голосов
/ 18 марта 2011

Исходя из этого вопроса , я подумал, что смогу определить что-то подобное в (например) resources.groovy

def currentEnv = Environment.current
if (currentEnv == Environment.CUSTOM && currentEnv.name == 'mock') {
    println 'Do some stuff for the mock env'
}

Код в операторе if должен выполняться, когдаЯ бегу (например) grails run-app -Denv=mock но это не так, что я делаю не так?

Ответы [ 2 ]

9 голосов
/ 18 марта 2011

Вы должны использовать метод Environment.executeForCurrentEnvironment(), например:

import grails.util.Environment

     grails.util.Environment.executeForCurrentEnvironment {
         development {
             println 'Running in DEV mode.'
         }
         production {
             println 'Running in production mode.'
         }
         mock {
             println 'Running in custom "mock" mode.'
         }
     }

и назовите Grails следующим образом: grails -Dgrails.env=mock run-app

Взгляните на этот пост , от mrhaki.

1 голос
/ 01 февраля 2015

Обратите внимание, что это может быть проблемой, если у вас определено несколько пользовательских сред. Я использую Grails 2.4.4. Если у меня определено окружение mytest и myqa, BOTH будет выполняться Grails, потому что оба являются Environment.CUSTOM, то есть некоторые определения bean-компонентов перезаписаны или неправильно настроены!

 grails.util.Environment.executeForCurrentEnvironment {
     development {
         println 'Running in DEV mode.'
     }
     mytest {
         println 'This will be evaluated because it is CUSTOM'
     }
     myqa {
         println 'This will ALSO be evaluated because it is CUSTOM. Yikes!'
     }
 }

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

 switch(Environment.current.name) {
     case 'development':
         println 'Running in DEV mode.'
         break

     case 'mytest':
         println 'Running in mytest mode'
         break

     case 'myqa':
         println 'Running in myqa mode'
         break
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...