2009-12-07 8 views
9

Ich frage mich, was ist die 'Best Practice' beim Hinzufügen von Config-Schlüssel-Wert-Paare zu Ihrer Grails App.Grails Config-Dateien: Best Practice

Sollten Sie nur zu Config.groovy hinzufügen oder neue Dateien erstellen.

Ich habe versucht, eine neue Konfigurationsdatei (Company.groovy) erstellen, konnte aber nicht auf die Config Requisiten von meiner App zugreifen. Aber wenn ich die Eigenschaften in Config.groovy cup-paste, habe ich Zugang zu ihnen .... Das funktioniert gut, aber ich will nicht, dass Config.groovy zu groß wird. Auch ein anderes Problem hob seinen Kopf. Beim Ausführen von Integrationstests habe ich festgestellt, dass das 'Test' env keinen Zugriff auf meine neuen Konfigurationseigenschaften hatte (Werte waren null).

Ich muss etwas grundlegend falsch machen. Jeder Rat würde geschätzt werden.

Danke, D

+3

Das ist eigentlich eine gute Frage, hat keine argumentativen Antworten und die Top-Antwort lieferte mir gute Informationen, die eine Frage beantwortet, die ich über Refactoring eine komplexe Config.groovy-Datei hatte. Da Grails-Apps im Laufe des Jahres immer größer werden, ist diese Frage für mehr Menschen relevant. –

+0

Dieser ist hilfreich: http://stackoverflow.com/questions/6602620/grails-config-include-another-config-file – osa

+0

Dieser ist auch hilfreich: http://stackoverflow.com/questions/13648194/grails- external-configuration-cant-access-to-external-variable-immer-immer – osa

Antwort

8

Ich bin nicht sicher, ob es spezifische Best Practices. Ich kann Ihnen sagen Plugins, die nur ein paar Optionen hinzufügen, in der Regel Config.groovy wiederverwenden, aber diejenigen, die komplexere Konfiguration erfordern (d. H. Nimble) haben in der Regel ihre eigene Datei, die getrennt werden kann. Es hängt also wirklich von Ihren speziellen Bedürfnissen und Konfigurationsmengen ab, die Sie hinzufügen möchten.

Wenn Sie Config.groovy untersuchen, sehen Sie in den oberen Zeilen (hier abgebildet), dass Sie angeben können, wo Grails nach Konfigurationsdateien suchen soll. Es kann automatisch Eigentum und .groovy Dateien für Sie zusammenführen.

// 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 beschreibt die Optionen für Sie.

+0

Danke Jean! Auch ich fand einen praktischen Beitrag auf Mocking Config für Integrationstests von Diensten (http://mrhaki.blogspot.com/2009/12/grails-goodness-mocking-configuration.html) – Derek

7

Nur um die obige Antwort hinzuzufügen, wenn Sie Ihre Datei MySampleConfig.groovy benennen (einfach den Dateinamen mit Config.groovy beenden), sollte sie dem grailsApplication-Kontext hinzugefügt werden, so dass Sie in der Lage sein sollten, Folgendes zu referenzieren:

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

als

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

Plug-In ich etwas anders glaube verhalten und die ConfigSlurper oder ähnliche Verwendung erforderlich ist (ich bin sehr offen auf diesem einer Korrektur).

+0

grailsApplication? ... ich bekomme Probleme damit – Rafael

+0

@Rafael - 'grailsApplication' sollte für Grails Artefakte über Injektion verfügbar sein – tylerwal