Config变量未按预期从application.yml获取

时间:2017-03-28 05:54:09

标签: grails-3.1

我的配置变量(在application.yml中)为:

xyz:
exception.emails: ['abc@gmail.com']

虽然在本地获取此工作正常但在部署战争后我得到配置变量:

xyz: [
    exception: [
        emails[
            0
        ]: abc@gmail.com
    ]
]

我把它拉为:

def email = Holders.config.grails.xyz.exception.emails

1 个答案:

答案 0 :(得分:0)

我实际上对这项工作感到惊讶,因为我不认为这是正确的yml语法,查看默认的application.yml,它们指定了一个userAgents列表,如下所示:

grails:
    mime:
        disable:
            accept:
                header:
                    userAgents:
                        - Gecko
                        - WebKit
                        - Presto
                        - Trident

我个人喜欢使用application.groovy并使用这样的groovy语法:

grails {
    mime {
        disable {
            accept {
                header {
                    userAgents:
                    ['Gecko', 'WebKit', 'Presto', 'Trident']
                }
            }
        }

它可能有点过时,但这是一个application.yml转换为application.groovy的示例: https://github.com/virtualdogbert/Grails3Tutorial/blob/step_01_settings_yml_to_groovy/grails-app/conf/application.groovy

另请注意,在过去,您可以运行来自application.groovy的代码,但是如果您有任何导入它们将无法工作,因为application.yml / groovy适用于cli(运行前),因此作为解决方法您还可以指定runtime.groovy,您可以在其中进行导入。如果您加倍努力并编写插件,可以指定plugin.groovy来设置默认值。