Ich versuche, eine sehr spezifische Anforderung in unserer Anwendung Grails 2.5.x zu erfüllen: Ich möchte das Datenbankschema vor dem Start der Anwendung aktualisieren, indem Sie eine Reihe von Datenbankkonvertierungsprogrammen anwenden (abhängig von der DB-Version/App-Version)). Wir haben das in der Vergangenheit in einer "traditionellen" Java-Servlet-App gemacht, aber ich kämpfe ein wenig mit Grails.Gibt es in Grails einen Vor-GORM-Init-Hook?
Frage: ist es ein Ereignis, in Grails, dass ich irgendwie in während der App-Start-Haken könnte, die mir Groovy und bestehende Datasource-Konfiguration zu verwenden, würde es ermöglichen, noch würde auftreten, bevor die GORM/Hibernate startet?
Einige Optionen habe ich bereits geprüft:
- BootStrap init Schließung würde hier nicht funktionieren, da die App einfach nicht mit dem „validieren“ -Modus, wenn das Datenbankschema veraltet war beginnen würde.
- Es gibt Events.groovy, die ich noch nicht benutzt habe, aber diese Ereignisse scheinen eher auf den Kompilierungs/Build-Lebenszyklus von Grails als auf die eigenständige Anwendung in einer WAR-Datei und auf einen App-Container ausgerichtet zu sein.
- Das Grails database-migration Plugin scheint ähnlich zu sein und erwartet Grails Befehlszeile auf dem Zielserver
verfügbar sein und die Konvertierung manuell vom Administratordurchgeführt werden. Es stellt sich heraus, dass ich hier höchstwahrscheinlich falsch lag.
Eigentlich können Datenbankmigrationen automatisch beim Start der App ausgeführt werden und nicht rein manuell sein. Ich empfehle Ihnen, das Plugin noch einmal anzusehen, da es genau das ist, wonach Sie suchen. –
Danke Joshua - Ich werde es überprüfen! Vielleicht habe ich nach einem schnellen Lesen der Plugin-Beschreibung die falsche Idee. – Rado
grails.plugin.databasemigration.updateOnStartFileNames = ['ihre-db-spezifische-changelog-filename.groovy'] <- alle Überarbeitungen unserer Datenbank werden durch Migrationsskripte erledigt. Wir haben verschiedene Skripte abhängig von h2, Oracle, SQLServer, MySQL. Datenbank-Migration ist in der Regel sehr leistungsfähig. – railsdog