Grails从config.groovy中访问当前环境

Grails从config.groovy中访问当前环境,grails,configuration,Grails,Configuration,使用Grails OAuth插件需要在Config.groovy中提供绝对回调URL。但是,对于每个环境,我有不同的服务器URL 有没有一种方法可以从Config.groovy内部获取当前环境,下面是一个我想要做的示例: def devServerUrl = 'http://dev.example.com' def prodServerUrl = 'http://prod.example.com' def currentServerUrl = grailsApplication.metadata

使用Grails OAuth插件需要在Config.groovy中提供绝对回调URL。但是,对于每个环境,我有不同的服务器URL

有没有一种方法可以从Config.groovy内部获取当前环境,下面是一个我想要做的示例:

def devServerUrl = 'http://dev.example.com'
def prodServerUrl = 'http://prod.example.com'
def currentServerUrl = grailsApplication.metadata.environment == 'development' ? devServerUrl : prodServerUrl;

environments {
    development {
        grails {
            serverURL = devServerUrl
        }
    }
    production {
        grails {
            serverURL = prodServerUrl
        }
    }
}

oauth {
    providers {
        runkeeper {
            api = RunKeeperApi
            key = 'key'
            secret = 'secret'
            callback = currentServerUrl + '/oauth/runkeeper/callback'
        }
    }
}
有什么想法吗?谢谢

试试这个:

def currentServerUrl = Environment.current.name == 'development' ? devServerUrl : prodServerUrl;

我认为为每个环境设置不同的
grails.serverURL
,然后执行以下操作更为简洁:

callback = "${grails.serverURL}/oauth/runkeeper/callback"

我认为Config.groovy中的Environment.current工作得很好,谢谢!我还必须导入Config.groovy顶部的grails.util.Environment,或者使用内置常量:Environment.current==Environment.DEVELOPMENT