获取 Grails 2.* 中其他环境的配置
Get config of other environment in Grails 2.*
我是 运行 Grails 2.1.1,我正在寻找一种方法来获取生产环境中变量集的值,而我 运行 在测试环境中。
配置文件:
development {
config.url = "http://local"
}
test {
config.url = "http://test.lan"
}
production {
config.url = "http://prod.lan"
}
我知道获取配置变量的唯一方法是 grailsApplication.config.url
查看Holders: https://gist.github.com/mathifonseca/ab443f1502bfd9461943
import grails.util.Holders
class FooService {
def foo() {
def devUrl = Holders.config.url
assert devUrl == "http://local"
}
}
标准配置设置仅查看当前环境。 Holders
与 grailsApplication
具有相同的当前配置。您必须再次 slurp 配置。尝试使用 ConfigurationHelper
。下面是 spock 测试。 (注意有时加倍的 config.config
是因为第一个 config
是 属性(或 getConfig()
方法的简称)并且您的密钥包含第二个 config
。 )
import grails.test.mixin.TestMixin
import grails.test.mixin.support.GrailsUnitTestMixin
import spock.lang.Specification
import org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper
@TestMixin(GrailsUnitTestMixin)
class ConfigSpec extends Specification {
void "test prod config"() {
def configSlurper = ConfigurationHelper.getConfigSlurper('production',null)
def configObject = configSlurper.parse(grailsApplication.classLoader.loadClass(grailsApplication.CONFIG_CLASS))
expect:
configObject.config.url == "http://prod.lan"
}
void "test dev config"() {
def configSlurper = ConfigurationHelper.getConfigSlurper('development',null)
def configObject = configSlurper.parse(grailsApplication.classLoader.loadClass(grailsApplication.CONFIG_CLASS))
expect:
configObject.config.url == "http://local"
}
void "test grailsApplication config"() {
expect:
grailsApplication.config.config.url == "http://test.lan"
}
void "test Holders config"() {
expect:
grails.util.Holders.config.config.url == "http://test.lan"
}
}
我是 运行 Grails 2.1.1,我正在寻找一种方法来获取生产环境中变量集的值,而我 运行 在测试环境中。 配置文件:
development {
config.url = "http://local"
}
test {
config.url = "http://test.lan"
}
production {
config.url = "http://prod.lan"
}
我知道获取配置变量的唯一方法是 grailsApplication.config.url
查看Holders: https://gist.github.com/mathifonseca/ab443f1502bfd9461943
import grails.util.Holders
class FooService {
def foo() {
def devUrl = Holders.config.url
assert devUrl == "http://local"
}
}
标准配置设置仅查看当前环境。 Holders
与 grailsApplication
具有相同的当前配置。您必须再次 slurp 配置。尝试使用 ConfigurationHelper
。下面是 spock 测试。 (注意有时加倍的 config.config
是因为第一个 config
是 属性(或 getConfig()
方法的简称)并且您的密钥包含第二个 config
。 )
import grails.test.mixin.TestMixin
import grails.test.mixin.support.GrailsUnitTestMixin
import spock.lang.Specification
import org.codehaus.groovy.grails.commons.cfg.ConfigurationHelper
@TestMixin(GrailsUnitTestMixin)
class ConfigSpec extends Specification {
void "test prod config"() {
def configSlurper = ConfigurationHelper.getConfigSlurper('production',null)
def configObject = configSlurper.parse(grailsApplication.classLoader.loadClass(grailsApplication.CONFIG_CLASS))
expect:
configObject.config.url == "http://prod.lan"
}
void "test dev config"() {
def configSlurper = ConfigurationHelper.getConfigSlurper('development',null)
def configObject = configSlurper.parse(grailsApplication.classLoader.loadClass(grailsApplication.CONFIG_CLASS))
expect:
configObject.config.url == "http://local"
}
void "test grailsApplication config"() {
expect:
grailsApplication.config.config.url == "http://test.lan"
}
void "test Holders config"() {
expect:
grails.util.Holders.config.config.url == "http://test.lan"
}
}