grails - Grails多环境配置 block

标签 grails groovy

语法糖/聪明的hack问题。

我想以一种比以下方式更优雅/更简洁的方式编写多环境配置块(它可以工作,但是很难看):

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
}

有什么聪明的主意吗?

最佳答案

您可以在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"...稍微容易一点。

关于grails - Grails多环境配置 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31251484/

相关文章:

java - 在 Maven 中使用 Java 10 的 Groovy 2.5.3

exception - Grails,Nimble和Blogito

grails - 如何在Grails应用程序中基于m.mysite.com重定向到移动页面

json - Grails-将UUID渲染为JSON

Groovy:如何获取 ?private? 的值闭包变量

class - 静态成员上的 Groovy getProperty()

javascript - 用Grails设置React

Grails 装置插件和功能测试重复数据

regex - 需要Groovy方式进行部分文件替换

groovy - 如何在 Groovy 脚本中检查文件是否存在