Grails多环境配置块

时间:2015-07-06 16:55:01

标签: grails groovy

语法sugar / clever hack question。

我想以比以下更优雅/更简洁的方式编写多环境配置块(它有效,但很难看):

environments {
    development {
        // long list of directives
    }
    ["staging", "production"].each{"$it"{  // <- ugly!
        // another long list of directives
    }}
}

我试图像以下一样破解一些DSL,将propertyMissing添加到EnvironmentBlockEvaluator.metaClass但我无法做到。主要问题是配置文件中的单词(例如staging)在groovy.util.ConfigObject中的闭包有机会对它们执行任何操作之前变为空environments { }。我不确定为什么。

(staging | production) {
    // directives
}

任何聪明的想法?

1 个答案:

答案 0 :(得分:1)

您可以在switch中使用resources.groovy块 - 我认为它也适用于Config.groovy(虽然尚未对其进行测试)。

switch (Environment.current) {
    case Environment.DEVELOPMENT:
    case Environment.TEST:
    //stuff for dev & test environments
    break
    default:
    //production stuff
}

虽然眼睛比["staging", "production"].each{"$it"...稍微容易一些。