如何在Grails中创建自定义环境?

时间:2011-03-16 10:06:50

标签: grails groovy

grails.util.Environment,定义了许多预配置的环境

  • PRODUCTION
  • 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.groovyConfig.groovy中使用,还有其他地方吗?

另外,我是否可以定义自己的环境,例如PRE_PRODUCTION,以便它可以使用上面的闭包和-Denv标志?

最后,CUSTOM环境是否可以与-Denv标志一起使用?

3 个答案:

答案 0 :(得分:17)

  

这些特定于环境的闭包   可以在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 source for Environment中看到的那样,这种自定义环境将枚举到Environment.CUSTOM,然后在Environment.executeForCurrentEnvironment块中,check against CUSTOM, and the name of the custom environment

答案 1 :(得分:4)

如果您创建自定义环境,则可以在使用environments {}块的任何位置使用它。例如,除了Bootstrap.groovyConfig.groovy之外,您还可以在DataSource.groovy中使用它,甚至可以在Searchable.groovy等其他配置文件中使用它。

另外,我相信

Environment.currentEnvironment.name将在您的案例中返回'pre_production'

答案 2 :(得分:1)

-Dgrails.env = pre_production

更多https://grails.org/wiki/Environments