2012-04-01 5 views
0

Ich benutze das Datenbankmigrations-Plugin in meiner App, habe aber Probleme mit anderen Plugins, die DB-Schema-Abhängigkeiten haben.In Grails ist es möglich, Datenbank Migrationen Plug-in zu konfigurieren, um vor anderen Plugins zu laufen?

Ich möchte das Migrations-Plugin zum Einrichten/Refactor meiner DB in Vorbereitung für die Verwendung eines frisch installierten Plugins (z. B. Taxonomie-Plugin) verwenden. Das Problem ist, dass das Migrations-Plugin nach anderen Plugins geladen wird, so dass meine Anwendung fehlschlägt, bevor ich die Migration sogar ausführen kann (Schemaabhängigkeiten werden nicht angewendet). Es erscheint mir vernünftig, dass DB-Migrationen vor anderen Plugins laufen sollten (in 99% der Fälle). Richtig?

Gibt es einen Weg (ohne das Migrations-Plugin mit "def loadBefore" anzupassen), um das Migrations-Plugin zuerst zu laden?

Dank

Antwort

1

Unfortunaltely ein DependsOn und loadAfter Eigenschaften des Plug-Ins werden vom Plugin-Entwickler eingestellt.

Sie können jedoch eine neue Umgebung erstellen, und verwenden Sie die folgende Konfiguration Eigenschaft grails.plugin.excludes eine Reihe von Plugins auszuschließen.

Grundsätzlich würde ich eine Grails Umgebung für die Datenbankmigration definieren. Ich würde eine Datenquelle für diese Umgebung definieren und in Config.groovy:

environments { 
    prodMig { 
    grails.plugin.excludes = 'interferingPlugin1,interferingPlugin2' 
    } 
} 

diese Plugins Interferenz plugin1 und Interferenz plugin2 von Ihrer prodMig Umwelt ausschließen würde.

Dann können Sie Ihre databse Migration Befehl wie folgt ausführen:

grails -Dgrails.env=prodMig dbm-update 
+0

Interessante Idee, krank versuchen, es muss raus. Vielen Dank – tinny