代码之家  ›  专栏  ›  技术社区  ›  Hassan ALAMI

获取Grails2中其他环境的配置。*

  •  0
  • Hassan ALAMI  · 技术社区  · 6 年前

    我运行的是Grails2.1.1,我正在寻找一种方法来获取在测试环境中运行时生产中变量集的值。 配置文件:

    development {
      config.url = "http://local"
    }
    test {
      config.url = "http://test.lan"
    }
    production {
      config.url = "http://prod.lan"
    }
    

    我知道获取配置变量的唯一方法是grailapplication.config.url

    2 回复  |  直到 6 年前
        1
  •  1
  •   jja    6 年前

    标准配置设置只查看当前环境。 Holders 当前配置与 grailsApplication . 你必须再次发出配置的声音。尝试使用 ConfigurationHelper . 下面是斯波克测试。(注意有时翻倍 config.config 是因为第一个 config 属性(或 getConfig() 方法),您的密钥包含 配置 )

    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"
        }
    
    }
    
        2
  •  0
  •   Michal_Szulc    6 年前

    退房 Holders : https://gist.github.com/mathifonseca/ab443f1502bfd9461943

    import grails.util.Holders
    
    class FooService {
    
         def foo() {
    
              def devUrl = Holders.config.url
    
              assert devUrl == "http://local"     
         }
    
    }