2010-05-18 1 views
8

Ich habe in den letzten paar Jahren mehrere Grails-Anwendungen entwickelt. Ich stelle zunehmend fest, dass die drei Grails-Umgebungen (Entwicklung, Test, Prod) nicht ausreichen, um meine Bedürfnisse zu befriedigen. Je "Enterprise" Ihre Anwendung bekommt, desto mehr Umgebungen haben Sie.Benutzerdefinierte Grails Environments?

Ich neige dazu, 6-Umgebungen für meine Entwicklungszyklus ...

DEVA // Meine dev
DEVB // Teamkollegen dev
CI_TEST // CI wie Hudson QA_TEST // Testing Teamumgebung
UAT_TEST // Kunden Testumgebung
ART // Produktion

Im frage mich, ob es eine Möglichkeit, benutzerdefinierte Grails-Umgebungen zu definieren? Ich denke nicht, dass es da ist, aber die Funktion könnte nützlich sein.

Die Art und Weise, wie ich mich jetzt gerade zurechtkomme, ist die Externalisierung der Konfiguration in eine Eigenschaftendatei.

Ich könnte mir vorstellen, dass dies eine ziemlich häufige Anforderung ist. Wie haben Sie sich also mit Ihren Umgebungen beschäftigt?

Antwort

18

Config.Groovy und DataSource.groovy unterstützen beide benutzerdefinierte Umgebungen (ich bin ziemlich sicher, die meisten anderen Konfigurationsdateien auch).

Wenn Sie Ihre Anwendung starten wollen oder es für eine benutzerdefinierte env Paket verwenden Sie

grails -Dgrails.env=myCustomEnv run-app 

dann in Config würden Sie

environments{ 
    myCustomEnv{ 
     myProp = 'myVal' 
    } 
} 

habe ich konnte keine Seite finden Sie im Handbuch Bedienungsanleitung, aber wir verwenden sie so, um die Einstellungen für die Beta und die uat Umgebung zu haben.

+0

Works well, thanks! Es überrascht mich, dass dies nicht irgendwo in den Dokumenten vergraben ist. – tinny

+0

Ja, wenn du 5 Minuten Zeit hast, wäre es gut, in "Grails 'JIRA" zu erscheinen und zu fragen, ob du eine bessere Doco dazu brauchst. – leebutts

+0

Übrigens, wenn Sie mehrere benutzerdefinierte Umgebungen verwenden, verlassen Sie sich nicht auf Environment.current in Ihrem Code: afaik es gibt immer CUSTOM für alle von ihnen zurück. – carlosayam

0

Eine Option könnte darin bestehen, eine DataSource in DataSource.groovy für jede Ihrer Umgebungen zu definieren und dann Konfigurationsinformationen in der Datenbank zu speichern.

Sie können dann Code in BootStrap.groovy hinzufügen, um Ihre Konfigurationen zu laden.

+0

Yeah könnte so etwas tun. Teil des Problems ist jedoch, dass es viele Datenquellen gibt. In der Regel eine Datenquelle pro Umgebung, von denen es 6 – tinny