2011-05-20 4 views
13

C'è un modo per usare le variabili d'ambiente nel gioco! file application.conf? Qualcosa di simile a questo:Esiste un modo per sostituire le variabili di ambiente in application.conf di playframework?

%prod.db.url=${env.DATABASE_JDBC_URL} 
%prod.db.driver=org.postgresql.Driver 
%prod.jpa.ddl=validate 

Non voglio hardcoded l'URL nella mia application.conf perché contiene le credenziali che lo sviluppatore non dovrebbe avere accesso.

+1

Non capisco come sia possibile nascondere queste informazioni? Se hai accesso alla variabile env, significa che puoi leggere il suo valore, non è vero? – mandubian

risposta

8

${ENV_VARIABLE_KEY} risolve qualsiasi variabile impostata nel proprio ambiente. non devi specificare "env". prefisso a meno che non sia parte della tua chiave.

+1

Yup. Questa è una nuova funzione aggiunta per giocare dopo aver postato la mia domanda originale. Molto bello –

3

Ho lo stesso problema. La mia soluzione:

  • diamo application.conf con solo proprietà per lo sviluppo locale e riporla in un VCS (SVN, Git, ...) per il team di sviluppo
  • aggiungere una riga nel file application.conf : "@ include.prod = prod.conf"
  • il file prod.conf contiene solo% prod. * proprietà
  • crea il file prod.conf direttamente sul server prod (o memorizzalo in un VCS diverso dalla tua applicazione , dove solo le persone possono leggere/scrivere)

Funziona bene per me.

aggiunge solo un messaggio per il team di sviluppo quando l'applicazione viene avviata:

ex: 20 mai 2011 21:09:16 play.Logger avvisate ATTENZIONE: Mancare includono: @ include.prod

Davvero non è un problema. Basta informare il team di sviluppo che questo messaggio non è un problema e di non eliminare la riga "@ include.prod" in application.conf

Speranza che aiuta

12

Tutte le variabili all'interno di $ {} vengono risolti utilizzando la seguente fonti:

  • $ {} application.path equivalente a Play.applicationPath.getAbsolutePath()
  • $ {} play.path equivalente a Play.frameworkPath.getAbsolutePath()
  • qualsiasi altra viene dal sistema. getProperty.

Così si potrebbe aggiungere questi come -Dkey = nome parametri all'avvio di Play! con le tue credenziali segrete specifiche per il tuo ambiente.

+0

Ho provato ad aggiungere il primo punto elenco, ma si è verificata un'eccezione in fase di esecuzione: 'Impossibile risolvere la sostituzione su un valore: $ {application.path}' –

+0

thx very mach;) – Lola