2011-03-16 14 views
10

grails.util.Environment, definisce un numero di ambienti preconfiguratiCome creare un ambiente personalizzato in Grails?

  • SVILUPPO
  • PRODUZIONE
  • TEST
  • CUSTOM

Quando si esegue un comando Grails, l'ambiente da usare può essere specificato utilizzando un -Denv flag, ad es grails run-app -Denv=test. È inoltre possibile specificare un blocco di codice che è specifico per un determinato ambiente utilizzando chiusure quali:

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

Queste chiusure specifiche per l'ambiente possono essere utilizzati in Bootstrap.groovy e Config.groovy, ci sono altri luoghi?

Inoltre, è possibile definire il mio ambiente, ad es. PRE_PRODUCTION, in modo che funzioni con le chiusure sopra e il flag -Denv?

Infine, è possibile utilizzare l'ambiente CUSTOM con il flag -Denv?

risposta

15

Queste chiusure specifici dell'ambiente possono essere utilizzati in Bootstrap.groovy e Config.groovy, ci sono altri luoghi?

Io non la penso così ... Per altri posti, si avrebbe bisogno di utilizzare il blocco 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 
    } 
} 

Inoltre, è possibile per me per definire mio ambiente, per esempio PRE_PRODUCTION, in modo che funzioni con le chiusure sopra e la bandiera -Denv ?

Sì, si dovrebbe essere in grado di dichiarare solo -Dgrails.env=pre_production e comprendono il blocco pre_production in Bootstrap.groovy o Config.groovy (o un blocco personalizzato grails.util.Environment come sopra)

modificare

Come è possibile vedere nel Grails source for Environment, questo tipo di ambiente personalizzato verrà enumerato in Environment.CUSTOM e quindi nel blocco Environment.executeForCurrentEnvironment, sarà check against CUSTOM, and the name of the custom environment

+0

Grazie, qualsiasi idea se 'PRE_PRODUCTION' otterrebbe aggiunto alla grails.utils.Environment' enum'? Ciò sembra improbabile, perché non penso che le costanti possano essere aggiunte a un enum in fase di runtime. –

+1

Aggiornato la mia risposta per coprire questo ... no, non si aggiunge all'Enum, vieni semplicemente contrassegnato come 'Environment.CUSTOM' con un' String' per il nome del tuo ambiente personalizzato –

+0

Grazie per l'aggiornamento. Sembra che non sia necessario configurare l'elenco degli ambienti personalizzati da nessuna parte, puoi semplicemente andare avanti e usarli (come mostrato sopra)? –

4

Se si crea un ambiente personalizzato, è possibile utilizzarlo ovunque sia utilizzato il blocco. Ad esempio, oltre a Bootstrap.groovy e Config.groovy, è possibile utilizzarlo anche in DataSource.groovy e anche in altri file di configurazione come Searchable.groovy.

Inoltre, credo

Environment.currentEnvironment.name tornerà 'pre_production' nel tuo caso.

Problemi correlati