3.2 Entornos - Reference Documentation
Authors: Graeme Rocher, Peter Ledbrook, Marc Palmer, Jeff Brown, Luke Daley, Burt Beckwith
Version: null
3.2 Entornos
Per Environment Configuration
Grails supports the concept of per environment configuration. TheConfig.groovy, DataSource.groovy, and BootStrap.groovy files in the grails-app/conf directory can use per-environment configuration using the syntax provided by ConfigSlurper. As an example consider the following default DataSource definition provided by Grails:Configuración por entornos
Grails es compatible con el concepto de configuración por entornos. Los archivosConfig.groovy, DataSource.groovy y BootStrap.groovy en el directorio grails-app/conf pueden utilizar configuración por entorno por medio con la sintaxis proporcionada por ConfigSlurper. Como ejemplo, considere la siguiente definición por defecto del DataSource proporcionada por Grails:dataSource {
pooled = false
driverClassName = "org.h2.Driver"
username = "sa"
password = ""
}
environments {
development {
dataSource {
dbCreate = "create-drop"
url = "jdbc:h2:mem:devDb"
}
}
test {
dataSource {
dbCreate = "update"
url = "jdbc:h2:mem:testDb"
}
}
production {
dataSource {
dbCreate = "update"
url = "jdbc:h2:prodDb"
}
}
}Notice how the common configuration is provided at the top level and then an
Observe cómo la configuración común se proporciona en el nivel superior y, a continuación, especifica un bloque environments block specifies per environment settings for the dbCreate and url properties of the DataSource.Packaging and Running for Different Environments
Grails' command line has built in capabilities to execute any command within the context of a specific environment. The format is:grails [environment] [command name]
environments especificando valores por entorno para dbCreate y la propiedad url para el DataSource.Empaquetado y ejecución para distintos entornos
La línea de comando de Grails tiene capacidad para ejecutar cualquier comando dentro del contexto de un entorno específico. El formato es:Grails [entorno] [nombre de comando]
In addition, there are 3 preset environments known to Grails: To target other environments you can pass a
Además, hay 3 entornos preestablecidos para Grails: dev, prod, and test for development, production and test. For example to create a WAR for the test environment you wound run:grails test war
grails.env variable to any command:grails -Dgrails.env=UAT run-app
dev, prod, y test, para development, production y test. Por ejemplo, para crear un WAR para el entorno de test puede ejecutar:grails test war
grails.env para cualquier comando:Grails-Dgrails.env=UAT run-app
Programmatic Environment Detection
Within your code, such as in a Gant script or a bootstrap class you can detect the environment using the Environment class:Detección de entorno mediante programación
Dentro del código, como en un script de Gant o una clase de bootstrap se puede detectar el entorno mediante la clase Environment:import grails.util.Environment...switch (Environment.current) { case Environment.DEVELOPMENT: configureForDevelopment() break case Environment.PRODUCTION: configureForProduction() break }
Per Environment Bootstrapping
Its often desirable to run code when your application starts up on a per-environment basis. To do so you can use thegrails-app/conf/BootStrap.groovy file's support for per-environment execution:Bootstrap por entorno
A menudo es deseable ejecutar código cuando la aplicación se inicia dependiendo del entorno. Para ello puede utilizar el soporte por entornos del archivograils-app/conf/BootStrap.groovy :def init = { ServletContext ctx ->
environments {
production {
ctx.setAttribute("env", "prod")
}
development {
ctx.setAttribute("env", "dev")
}
}
ctx.setAttribute("foo", "bar")
}Generic Per Environment Execution
The previousBootStrap example uses the grails.util.Environment class internally to execute. You can also use this class yourself to execute your own environment specific logic:Ejecución genérica por entorno
En el ejemplo anterior deBootStrap se utiliza la clase grails.util.Environment internamente para ejecutar. También puede utilizar esta clase para ejecutar su propia lógica específica del entorno:Environment.executeForCurrentEnvironment {
production {
// hacer algo en producción
}
development {
// hacer algo en desarrollo
}
}
