2009-12-07 131 views
9

想知道什麼是將配置鍵值對添加到您的Grails應用時的'最佳實踐'。Grails配置文件:最佳實踐

如果您只是添加到Config.groovy或創建新文件。

我試着創建一個新的配置文件(Company.groovy),但無法從我的應用程序訪問配置道具。然而,當我將這些屬性粘貼到Config.groovy中時,我確實可以訪問它們....這可以正常工作,但我不希望Config.groovy變得太大。另一個問題擡起頭來。在運行Integration測試時,我發現'test'env無法訪問我的新配置屬性(值爲null)。

我必須做一些根本性的錯誤。任何意見,將不勝感激。

感謝, d

+3

其實,這是一個很好的問題,沒有議論響應和頂部的答案與回答一個問題,我有大約重構一個複雜的Config.groovy文件良好的信息提供給我。隨着Grails應用程序逐年增長,這個問題與更多人更相關。 – 2012-05-17 23:04:52

+0

這一個是有幫助的:http://stackoverflow.com/questions/6602620/grails-config-include-another-config-file – osa 2013-10-08 23:53:02

+0

這一個也是有幫助的:http://stackoverflow.com/questions/13648194/grails- external-configuration-can-access-to-external-variable-getting-always – osa 2013-10-08 23:59:40

回答

8

我不知道有具體的最佳實踐。我可以告訴你只需添加一些選項的插件通常可以重用Config.groovy,但需要更復雜配置的插件(即Nimble)通常具有可以分開的自己的文件。所以這真的取決於你想添加的特定需求和配置數量。

如果您檢查Config.groovy,您會在幾行頂端的行中看到(您可以在這裏複製),您可以指定Grails在何處查找配置文件。它會自動爲您合併屬性和.groovy文件。

// locations to search for config files that get merged into the main config 
// config files can either be Java properties files or ConfigSlurper scripts 

// grails.config.locations = [ "classpath:${appName}-config.properties", 
//        "classpath:${appName}-config.groovy", 
//        "file:${userHome}/.grails/${appName}-config.properties", 
//        "file:${userHome}/.grails/${appName}-config.groovy"] 

This section in the docs描述了適合您的選項。

+0

謝謝Jean! 另外我發現一個方便的嘲弄配置服務集成測試(http://mrhaki.blogspot.com/2009/12/grails-goodness-mocking-configuration.html) – Derek 2009-12-08 10:21:12

7

只是爲了添加上面的答案,如果您將文件命名爲MySampleConfig.groovy(只需使用Config.groovy結束文件名),應該將其添加到grailsApplication上下文中,以便您能夠引用以下內容:

sample{ 
     first{ 
      name = "Italy" 
     } 
     second{ 
      name = "Spain" 
     } 
} 

grailsApplication.config.sample["first"].name 
grailsApplication.config.sample["second"].name 

插件我相信行爲略有不同,使用ConfigSlurper或類似的需要(我要糾正這一個非常開放的)。

def config = new ConfigSlurper().parse(new File('grails-app/conf/MySampleConfig.groovy').toURL()) 
println config.sample['first'].name 
println config.sample['second'].name 
+0

grailsApplication? ...我遇到問題 – Rafael 2014-09-29 12:00:31

+0

@Rafael - 'grailsApplication'應該可以通過注入使用grails artefact – tylerwal 2016-02-16 21:00:24