2011-03-16 20 views
10

grails.util.Environment, define una serie de entornos preconfigurados¿Cómo crear un entorno personalizado en Grails?

  • DESARROLLO
  • PRODUCCIÓN
  • TEST
  • CUSTOM

Cuando se ejecuta un comando Grails, el entorno de usar se puede especificar utilizando una -Denv bandera, por ejemplo grails run-app -Denv=test. También puede especificar un bloque de código que es específico para un determinado entorno mediante cierres tales como:

environments { 
    production { 
     grails.serverURL = "http://www.changeme.com" 
    } 
    development { 
     grails.serverURL = "http://localhost:8080/${appName}" 
    } 
    test { 
     grails.serverURL = "http://localhost:8080/${appName}" 
    } 
} 

Estos cierres específicos del entorno se pueden utilizar en Bootstrap.groovy y Config.groovy, ¿hay otros lugares?

Además, ¿es posible para mí definir mi propio entorno, p. PRE_PRODUCTION, tal que funcionará con los cierres arriba y la bandera -Denv?

Por último, ¿se puede utilizar el entorno CUSTOM con la bandera -Denv?

Respuesta

15

Estos cierres específicos del entorno se pueden utilizar en Bootstrap.groovy y Config.groovy, ¿hay otros lugares?

Yo no lo creo ... Para otros lugares, lo que tendría que utilizar el bloque 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 
    } 
} 

Además, es posible que yo para definir mi propio entorno, p.ej PRE_PRODUCTION, tal que funcionará con los cierres arriba y la marca -Denv ?

Sí, deberías ser capaz de simplemente declarar -Dgrails.env=pre_production e incluyen el bloque pre_production en Bootstrap.groovy o Config.groovy (o un bloque personalizado grails.util.Environment que el anterior)

edición

Como se puede ver en Grails source for Environment, este tipo de entorno personalizado se enumerará en Environment.CUSTOM, y luego en el Environment.executeForCurrentEnvironment bloque, será check against CUSTOM, and the name of the custom environment

+0

Gracias, alguna idea de si sería 'PRE_PRODUCTION' se añaden a la enumeración' grails.utils.Environment'? Esto parece poco probable, porque no creo que las constantes se puedan agregar a una enumeración en tiempo de ejecución. –

+1

Actualicé mi respuesta para cubrir esto ... no, no agrega al Enum, solo se marca como 'Environment.CUSTOM' con' String' para el nombre de su entorno personalizado –

+0

Gracias por la actualización. Parece que no hay necesidad de configurar la lista de entornos personalizados en cualquier lugar, simplemente puede continuar y usarlos (como se muestra arriba)? –

4

Si crea un entorno personalizado, puede usarlo en cualquier lugar donde se use el bloque environments {}. Por ejemplo, además de Bootstrap.groovy y Config.groovy, también puede usarlo en DataSource.groovy e incluso en otros archivos de configuración como Searchable.groovy.

Además, creo que

Environment.currentEnvironment.name volverá 'pre_production' en su caso.

Cuestiones relacionadas