语法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
}
任何聪明的想法?
答案 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"...
稍微容易一些。