如何在Grails中扩展每个环境的配置

3

看起来只有grails.serverURL和grails.path被认为是环境配置项。bla和foo被忽略了,无法在应用程序中使用。 有人可以解决这个问题,并提供一种方法来使bla和foo在每个环境中配置吗?

environments {
    production {
        grails.serverURL = "http://alpha.foo.de"
        grails.path = ""
        bla = "text"
        foo= "word"
    }
    test {
        grails.serverURL = "http://test.foo.de"
        grails.path = ""
        bla = "othertext"
        foo= "otherword"
    }
}

1
你是如何访问 blah 和 foo 的?你能贴出一些返回这些属性为空的代码吗? - leebutts
你如何从服务中访问这个blah和foo?使用grailsApplication.config.blah无法正常工作... - user2427
请参见此问题的链接:https://dev59.com/x3E85IYBdhLWcg3wvGER。 - Daddy Pumpkin
5个回答

2
自Grails 3.0以来,可以使用Groovy或YAML语法。新的主应用程序配置文件是/conf/application.yml,但您仍然可以使用现有的Groovy配置定义/conf/application.groovy文件。
这是每个环境数据源定义的示例(使用YAML):
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
    myenv:
        dataSource:
            dbCreate: update
            url: jdbc:h2:myenvDb

要在特定环境下运行grails命令,您可以使用:

grails [environment] [command name]

为了针对不同于开发、测试和生产环境的环境,您可以使用以下方法:
grails -Dgrails.env=myenv run-app

查看Grails环境文档此示例应用程序以获取更多信息。


0
请在您的Config.groovy文件中检查是否导入了Environment。
import grails.util.Environment

否则,Environment.current为空。

0

尝试...

> grails prod run-app

这应该给你 bla(文本)和 foo(单词)

> grails test run-app

这应该给你 bla(其他文本)和 foo(另一个单词)


0

Config.groovy配置

environments {
    development {
        grails.serverURL = "http://alpha.foo.de"
        grails.path = "/bar"
        staticServerURL = "http://static.foo.de"
        staticPath = "/static"
    }
}

源代码 index.gsp

${grailsApplication.config.staticServerURL}a
${grailsApplication.config.staticPath}b
${grailsApplication.config.grails.serverURL}c
${grailsApplication.config.grails.path}d

当使用grails run-app启动时,会打印出什么内容?

a b http://alpha.foo.dec /bard

0
所有的ConfigSlurper变量都是按环境进行作用域限定的。你上面展示的应该可以正常工作。
当你使用grails run-app命令时,默认情况下会在development环境中运行。这可能是你遇到问题的原因吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接