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

Dón*_*nal 13 grails groovy

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

  • 发展
  • 生产
  • 测试
  • 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}"
    }
}
Run Code Online (Sandbox Code Playgroud)

这些特殊的环境闭合可以用在Bootstrap.groovyConfig.groovy,是否有其他地方呢?

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

最后,CUSTOM环境可以与-Denv旗帜一起使用吗?

tim*_*tes 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
    }
}
Run Code Online (Sandbox Code Playgroud)

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

是的,您应该能够在Bootstrap.groovy或Config.groovy(或上面的自定义块)中声明-Dgrails.env=pre_production并包含pre_productiongrails.util.Environment

编辑

正如您在Grails 源环境中看到的那样,这种自定义环境将枚举到Environment.CUSTOM,然后在Environment.executeForCurrentEnvironment块中,它将检查CUSTOM,以及自定义环境的名称