2011-05-20 13 views
13

Czy istnieje sposób na wykorzystanie zmiennych środowiskowych w grze! plik application.conf? Coś takiego:Czy istnieje sposób na zastąpienie zmiennych środowiskowych w pliku application.conf playframework?

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

Nie chcę hardcode URL w moim application.conf ponieważ zawiera poświadczenia, że ​​deweloper nie powinien mieć dostępu.

+1

Nie rozumiem, jak możesz ukryć te informacje? Jeśli masz dostęp do zmiennej env, oznacza to, że możesz odczytać jej wartość, prawda? – mandubian

Odpowiedz

8

${ENV_VARIABLE_KEY} rozwiązuje wszystkie zmienne ustawione w danym środowisku. nie musisz określać "env." przedrostek, chyba że jest to część twojego klucza.

+1

Yup. Jest to nowa funkcja dodana do gry po opublikowaniu pierwotnego pytania. Bardzo fajny. –

3

Mam ten sam problem. Moje rozwiązanie:

  • niech application.conf tylko właściwości dla rozwoju lokalnego i przechowywać go w VCS (SVN, Git, ...) dla swojego zespołu dev
  • dodać linię w pliku application.conf : "@ include.prod = prod.conf"
  • plik prod.conf zawiera tylko% prod. * właściwości
  • utwórz plik prod.conf bezpośrednio na serwerze prod (lub przechowuj go w innym VCS niż Twoja aplikacja , gdzie tylko ludzie mogą go odczytać/zapisać)

To działa dobrze dla mnie.

To tylko dodaje wiadomość dla zespołu dev gdy aplikacja zaczyna:

ex: 20 mai 2011 21:09:16 play.Logger ostrzec UWAGA: Nie obejmuje: @ include.prod

Naprawdę żaden problem. Wystarczy poinformować swój zespół dev, że ta wiadomość nie jest problemem, a nie usunąć linię „@ include.prod” w application.conf

Nadzieja pomaga

12

Wszystkie zmienne w ciągu $ {} są rozwiązywane przy użyciu następujących Źródło:

  • $ {application.path} równoważne Play.applicationPath.getAbsolutePath()
  • $ {play.path} równoważne Play.frameworkPath.getAbsolutePath()
  • każda inna pochodzi z systemu. getProperty.

Możesz dodać te parametry jako -Dkey = name podczas uruchamiania gry! z twoimi tajnymi danymi uwierzytelniającymi specyficznymi dla twojego środowiska.

+0

Próbowałem dodać pierwszy punktor, ale wystąpił wyjątek czasu wykonywania: 'Nie można rozwiązać podstawienia do wartości: $ {application.path}' –

+0

thx bardzo mach;) – Lola

Powiązane problemy