2016-03-03 7 views
5

मैं एक विश्वसनीय सेवा को सत्यापित करने के लिए परीक्षण कोड लिख रहा हूं। मैं परीक्षणों को निष्पादित करने से पहले पर्यावरण चर को बदलकर अपने किसी भी विभिन्न वातावरण में इसे इंगित करने में सक्षम होना चाहता हूं।एकाधिक टाइपसेफ कॉन्फ़िगरेशन फ़ाइलों को विलय करना और सभी विलय होने के बाद ही हल करना

मैं तीन अलग अलग config फाइल को मर्ज करने के लिए सक्षम होना चाहते हैं: - सभी वातावरण

  • conf/env/<env>.conf के लिए डिफ़ॉल्ट कॉन्फ़िगरेशन को महत्व देता है -

    • conf/env/default.conf वातावरण-विशिष्ट मूल्यों
    • application.conf - उपयोगकर्ता की
    से ऊपर के किसी भी ओवरराइड 10

    विचार यह है कि मैं एक ही कॉन्फ़िगरेशन फ़ाइल में सब कुछ नहीं चाहता, और खराब संपादन के जोखिम को चलाता हूं जिससे कॉन्फ़िगरेशन आइटम खो जाते हैं। तो इसके बजाय, उन्हें अलग रखें और उपयोगकर्ता को ओवरराइड करने की क्षमता दें।

    यहां यह मुश्किल है: default.conf में <env>.conf में ओवरराइड होने वाली चीज़ों के लिए $ {संदर्भ} शामिल होंगे, और application.conf में आगे ओवरराइड किया जा सकता है।

    मुझे तीनों को विलय होने तक हल करने की आवश्यकता है। मैं उसको कैसे करू?

  • उत्तर

    10

    उत्तर के स्थान पर ConfigFactory.parseResource() का उपयोग करना है।

    यहाँ समाप्त परिणाम

    private lazy val defaultConfig  = ConfigFactory.parseResources("conf/env/default.conf") 
    private lazy val environmentConfig = ConfigFactory.parseResources("conf/env/" + env + ".conf") 
    private lazy val userConfig  = ConfigFactory.parseResources("application.conf") 
    private lazy val config = userConfig 
              .withFallback(environmentConfig) 
              .withFallback(defaultConfig) 
              .resolve() 
    
    +1

    यह शायद यहाँ https://github.com/typesafehub/config अधिक स्पष्ट कर दिया जाना चाहिए –

    संबंधित मुद्दे