2013-02-06 15 views
10

Używam playframework 2.1-RC2. Przede wszystkim widziałem all thequestions, więc postępowałem zgodnie ze wspólną instrukcją oddzielania pliku application.conf na środowisko. Więc ja application.test.conf i uruchomić testy w ten sposób:Ustawienia Playframework w zależności od środowiska

play -Dconfig.file=./conf/application.test.conf "test" 

Próbowałem różnych kombinacji, jak

play -Dconfig.file=./conf/application.test.conf ~test 

lub

play -Dconfig.file=conf/application.test.conf ~test 

Wciąż nie szczęście, to po prostu robi nie zostanie wybrany, domyślnie jest to jeden (application.conf).

Z drugiej strony, jeśli robię

play -Dconfig.file=./conf/application.dev.conf "run" 

następnie aplikacja wybiera właściwą config.

Jak mogę określić plik konfiguracyjny testu?

Odpowiedz

13

znalazłem najbardziej solidną drogę do specifiy to w wielu platformach sposób jest umieścić go bezpośrednio w Build.scala:

val main = play.Project(appName, appVersion, appDependencies).settings(
    javaOptions in Test += "-Dconfig.file=conf/test.conf", 
    ... 
) 

Bonus: raz skonfigurować i zapomnieć ;-)

+0

człowiek, którego uczyniłeś mój dzień. Ale jak to jest, że robienie tego samego przez konsolę nie działa? .. – zapadlo

+0

Nie wiem, który system operacyjny działa, ale przynajmniej w systemie Windows istnieje znany, ale o niskim priorytecie błąd, że gra nie przekazuje parametrów do JVM poprawnie (i jest to parametr JVM, a nie parametr odtwarzania). SBT robi lepiej ;-) – Leo

+2

To interesujące podejście, ale skąd pochodzi słowo "Test"? Czy można zrobić to samo w środowisku takim jak dev/preprod/prod ...? Dzięki – c4k

1

Innym podejściem jest zastąpienie metody w GlobalSettings/Global o nazwie onLoadConfig, która pozwala kontrolować, gdzie aplikacja będzie szukać konfiguracji.

Tak więc w jednej z naszych aplikacji mam tę konfigurację poniżej dla mojego folderu conf /.

conf/application.conf --> configurations common for all environment 
conf/dev/application.conf --> configurations for development environment 
conf/test/application.conf --> configurations for testing environment 
conf/prod/application.conf --> configurations for production environment 

Dzięki temu możesz zaimplementować dziedziczenie, takie jak konfiguracja dla konfiguracji, masz wspólne i 3 inne dla konkretnego trybu środowiska.

kod wewnątrz metody onLoadConfig należy po prostu załadować konfiguracji głównej i ustawić konfigurację poprawne awaryjnej specyficzne dla danego środowiska, a następnie powrócić instancji konfiguracji jak poniżej:

**return new Configuration(baseConfig.withFallback(envConfig));** 

Spróbuj sprawdzić to blog post for complete snippet kodu.

Mam nadzieję, że to pomoże.

Powiązane problemy