Ste*_*lth 8 grails grails-config grails-2.0
我想在我的grails应用程序中加载特定于环境的配置,以便根据运行grails应用程序的JVM,我可以指向特定于环境的URL.在我的情况下,当我的应用程序从dev变为prod时,我有4种不同的环境可供使用(而不是grails app假定的默认值3).
我的JVM都定义了一个System属性,当我执行"System.getProperty()"时,告诉我运行该应用程序的环境.
我的问题是,在运行时检查和加载特定于环境的配置的最佳位置是什么?在BootStrap.groovy里面?我没有使用命令行或grails {env_name} war来构建war文件的选项.
谢谢.
Joe*_*Joe 16
将变量grailsEnv设置为以下Tomcat的环境Java变量是一个示例:
set CATALINA_OPTS=%CATALINA_OPTS% -Xms256m -Xmx1024m -Dgrails.env=development
Run Code Online (Sandbox Code Playgroud)
在grails命令行上添加环境变量:
grails run-app -Dgrails.env=stage
Run Code Online (Sandbox Code Playgroud)
您可以使用检查环境变量,如下所示:
if (grails.util.Environment.current.name == "development") {
UsageCodeDefinition ucd = new UsageCodeDefinition()
ucd.setDescription("UFARSFileUpload Upload Development")
ucd.setFiscalYear("12-13")
ucd.setInstructions("Welcome to UFARSFileUpload Development were Open")
ucd.save(failOnError: true)
}
Run Code Online (Sandbox Code Playgroud)
您可以使用枚举值而不是名称变量,但如果使用自定义环境值,则它们将映射到枚举自定义,并使用名称来区分自定义值.
if (grails.util.Environment.current == grails.util.Environment.DEVELOPMENT) {
Run Code Online (Sandbox Code Playgroud)
不设置JVM启动参数:
-Dgrails.env=whatever
Run Code Online (Sandbox Code Playgroud)
您的grails应用将使用中设置的值
<yourapp>/WEB-INF/classes/application.properties
Run Code Online (Sandbox Code Playgroud)
会有一个这样的值集:
grails.env=development
Run Code Online (Sandbox Code Playgroud)
此默认环境值由建立战争时使用的选项决定。您可以与建立战争
-Dgrails.env=development war
Run Code Online (Sandbox Code Playgroud)
然后application.properties将具有grails.env = development,如果您不选择它,则默认为grails.env = production
就您的问题而言,您不确定要配置为使用“特定于环境的网址”的内容。目前尚不清楚如何存储这些特定于环境的URL。例如,如果URL变量是Grails服务的成员变量,并且您将特定于环境的URL存储在Config.groovy中,则可以
import grails.util.Environment
...
//inject the GrailsApplication Configuration in Config.groovy
def grailsApplication
//Hold the URL value from Config.groovy
String environmentUrl
...
Environment current = Environment.getCurrent()
if(Environment.PRODUCTION == current) {
environmentUrl = grailsApplication.config.PRODUCTION_URL
} else {
environmentUrl = grailsApplication.config.DEVELOPMENT_URL
}
Run Code Online (Sandbox Code Playgroud)
Config.groovy在哪里
PRODUCTION_URL = "http://blah.com/blah/"
DEVELOPMENT_URL = "http://blah.dev/blah"
Run Code Online (Sandbox Code Playgroud)
希望能有所帮助。