2012-02-23 7 views
5

Oceniam Flywaya do wykorzystania w moim projekcie. Nasze obecne skrypty SQL zawierają symbole zastępcze dla takich adresów URL, które będą miały różne nazwy domen w zależności od środowiska (dev, qa, prod).Jak działają elementy zastępcze w Flyway?

szczególności, możemy mieć INSERT jak

INSERT INTO FEED VALUES ('app.${env.token}.company.org/feed1', 'My Feed'); 

$ {env.token} należy zastąpić 'dev', 'QA' lub 'prod'.

Mamy około 50 różnych właściwości, które potencjalnie mogą wymagać wymiany w skryptach SQL. Wszystkie właściwości znajdują się w jednym lub dwóch plikach właściwości.

Czy istnieje sposób uruchomienia zadania migracji Mrówka Flyway, aby wyciągnął tokeny zastępcze i wartości z pliku właściwości? Coś w stylu zadania filtra Ant?

Odpowiedz

9

Obecnie przy podawaniu symboli zastępczych jako właściwości nazwa nieruchomości powinna być poprzedzona prefiksem flyway.placeholders.

Na przykład $ {env.token} zastępczy można określić bezpośrednio jako obiektu Ant: flyway.placeholders.env.token

Nie ma jeszcze wsparcia dla przechodzącej bezpośrednio plik nieruchomości , bez używania prefiksów dla nazw właściwości. Możesz zgłosić problem w numerze Issue Tracker. :-)

+1

Axel, czy możesz dodać to wyjaśnienie do dokumentacji tutaj: https://flywaydb.org/documentation/migration/sql Nie mogłem zrozumieć prawidłowego użycia symboli zastępczych przed przeczytaniem tutaj. – csonuryilmaz

1

Jeśli token był subdomain:

INSERT INTO FEED VALUES ('app.${subdomain}.company.org/feed1', 'My Feed'); 

Wartości w flyway.conf:

flyway.url=jdbc:mydb://db 
flyway.user=root 
flyway.schemas=schema1 
flyway.placeholders.subdomain=example 

lub wiersz poleceń:

flyway -url=jdbc:mydb://db -user=root -schemas=schema1 -placeholders.subdomain=example migrate 

Czy uruchomić skrypt jako :

INSERT INTO FEED VALUES ('app.example.company.org/feed1', 'My Feed'); 
Powiązane problemy