2012-02-23 12 views
5

Sto valutando Flyway per l'utilizzo nel mio progetto. I nostri attuali script SQL contengono segnaposto per cose come URL che avranno nomi di dominio diversi a seconda dell'ambiente (dev, qa, prod).Come funzionano i segnaposto in Flyway?

In particolare, potremmo avere istruzioni INSERT come

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

$ {} env.token deve essere sostituito con 'dev', 'qa', o 'prod'.

Abbiamo circa 50 proprietà diverse che potrebbero potenzialmente richiedere la sostituzione negli script SQL. Le proprietà risiedono in uno o due file di proprietà.

Esiste un modo per eseguire l'attività di migrazione di Flyway Ant in modo da estrarre i token e i valori di sostituzione da un file delle proprietà? Qualcosa sulla falsariga del compito del filtro Ant?

risposta

9

Attualmente quando si forniscono segnaposti come proprietà, il nome della proprietà deve essere preceduto da flyway.placeholders.

Per esempio i $ {} env.token segnaposto può essere specificato direttamente come questa proprietà Ant: flyway.placeholders.env.token

ci sono il supporto per passare direttamente un file di proprietà , senza usare prefissi per i nomi delle proprietà. Sentiti libero di sollevare un problema nel Issue Tracker. :-)

+1

Axel, puoi aggiungere questa spiegazione alla documentazione qui: https://flywaydb.org/documentation/migration/sql Non ho potuto capire l'uso corretto dei segnaposto prima di leggere da qui. – csonuryilmaz

1

Se il token è stato subdomain:

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

I valori nella flyway.conf:

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

o riga comandi:

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

Sarebbe eseguire lo script come :

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