2009-05-09 14 views
9

मैं अपनी पहली Grails प्लगइन विकसित कर रहा हूँ। इसे एक webservice का उपयोग करना है। प्लगइन को जाहिर तौर पर webservice url की आवश्यकता होगी। ग्रोवी कक्षाओं में इसे हार्डकोड किए बिना इसे कॉन्फ़िगर करने का सबसे अच्छा तरीका क्या है? विभिन्न वातावरण के लिए अलग-अलग कॉन्फ़िगरेशन के साथ यह अच्छा होगा।Grails प्लगइन का विन्यास

उत्तर

7

यदि यह केवल एक छोटा (पढ़ा गया: एक आइटम) कॉन्फ़िगरेशन विकल्प है, तो यह गुण फ़ाइल में स्लर्प करना आसान हो सकता है। यदि कुछ कॉन्फ़िगरेशन विकल्प हैं, और उनमें से कुछ गतिशील होना चाहिए, तो मैं सुझाव दूंगा कि एसीगी सुरक्षा प्लगइन क्या करता है - फ़ाइल को /grails-app/conf/plugin_name_config.groovy में जोड़ें।

जोड़ा गया बोनस यह है कि उपयोगकर्ता अपने कॉन्फ़िगरेशन विकल्पों की गणना करने के लिए ग्रोवी कोड निष्पादित कर सकता है (गुण फ़ाइलों का उपयोग करने में बहुत बेहतर), साथ ही आसानी से विभिन्न परिवेशों को करने में सक्षम है।

http://groovy.codehaus.org/ConfigSlurper देखें, जो grails आंतरिक रूप से config.groovy जैसे slurp configs के लिए उपयोग करते हैं।

//e.g. in /grails-app/conf/MyWebServicePluginConfig.groovy 
somePluginName { 
    production { 
     property1 = "some string" 
    } 
    test { 
     property1 = "another" 
    } 
} 

//in your myWebServicePlugin.groovy file, perhaps in the doWithSpring closure 
GroovyClassLoader classLoader = new GroovyClassLoader(getClass().getClassLoader()) 
ConfigObject config 
try { 
    config = new ConfigSlurper().parse(classLoader.loadClass('MyWebServicePluginConfig')) 
} catch (Exception e) {/*??handle or what? use default here?*/} 
assert config.test.property1.equals("another") == true 
+0

अजीब विचार सिर्फ एक संपत्ति के लिए अलग कॉन्फ़िग फ़ाइल के लिए एक सेवा में, 'Config.groovy' है कि संपत्ति के लिए इस्तेमाल किया जाना चाहिए। – tig

+2

@tig AFAIK, प्लगइन पैक होने पर 'Config.groovy' छोड़ा जाता है, और इसे कॉन्फ़िगर करने से प्लगइन का परीक्षण करने के लिए, नहीं? – peterp

13

आप इसे सरल (टीएम) रखना चाहते हैं। आप कॉन्फ़िगर.groovy में सीधे यूआरएल को परिभाषित कर सकते हैं- प्रति-पर्यावरण सेटिंग्स को शामिल करना- और grailsApplication.config (अधिकांश मामलों में) या एक ConfigurationHolder.config ऑब्जेक्ट का उपयोग करके आवश्यकतानुसार अपनी प्लगइन से इसे एक्सेस करें (details in the manual देखें)।

एक अतिरिक्त बोनस के रूप में सेटिंग को मानक जावा प्रॉपर्टी फाइलों में या grails.config.locations में निर्दिष्ट अन्य कॉन्फ़िगरेशन फ़ाइलों में भी परिभाषित किया जा सकता है।

उदा। Config.groovy

में
// This will be the default value... 
myPlugin.url=http://somewhe.re/test/endpoint 
environments { 
    production { 
    // ...except when running in production mode 
    myPlugin.url=http://somewhe.re/for-real/endpoint 
    } 
} 

बाद में, अपने प्लगइन द्वारा प्रदान की

import org.codehaus.groovy.grails.commons.ConfigurationHolder 
class MyPluginService { 
    def url = ConfigurationHolder.config.myPlugin.url 
    // ... 
} 
संबंधित मुद्दे