Me gustaría que mi Juego aplicación para el uso de diferentes bases de datos de la prueba, la local y la producción (la producción es Heroku) ambientes.
En application.conf
tengo:
db.default.driver=org.postgresql.Driver
%dev.db.default.url="jdbc:postgresql://localhost/foobar"
%test.db.default.url="jdbc:postgresql://localhost/foobar-test"
%prod.db.default.url=${DATABASE_URL}
Esto no parece funcionar. Cuando ejecuto play test
o play run
,
todos los DB de access no puede con:
Configuration error [Missing configuration [db.default.url]] (Configuration.scala:258)
Tengo un par de preguntas acerca de esto:
-
En general, estoy un poco confundido acerca de cómo las bases de datos se configuran
en Juego: parece que hay llanuradb
,db.[DBNAME]
ydb.
y diferentes tutoriales de tomar decisiones diferentes entre
[DBNAME].url
los. Ciertas expresiones que parecen que deben trabajar (por ejemplo,db.default.url = "jdbc:..."
fallar con un error que fue una cadena donde un objeto que se esperaba). -
He visto que otras personas sugieren que puedo crear diferentes
prod.conf
,dev.conf
ytest.conf
archivos, cada uno conapplication.conf
y, a continuación, contienen DB-configuración específica. Pero en ese caso, ¿cómo puedo especificar qué base de datos para utilizar cuando ejecutotest
desde el Juego de consola? -
Es el
%env
sintaxis supone que funciona en la Play 2? -
¿Cuál es la manera correcta para especificar un entorno para
play test
a utilizar?
En Play 2 no son diferentes de configuración de los ambientes. En lugar de que usted acaba de establecer o anular los parámetros de configuración en el
conf/application.conf
archivo. Una manera de hacerlo es en elplay
de la línea de comandos, como:También puede informar a Jugar a utilizar una configuración diferente de archivo:
Para un ejemplo Procfile para Heroku, ver:
https://github.com/jamesward/play2bars/blob/scala-anorm/Procfile
Más detalles en el Juego Docs:
http://www.playframework.org/documentation/2.0/Configuration
%prod
consejos eran para Jugar 1.x? Gracias por los ejemplos. La verdad es que tengo el dev/prod problema de configuración trabajado en este punto. Mi pregunta es: ¿cómo hago para configurar el Juego en un entorno diferente al ejecutar el conjunto de pruebas?%prod
cosas es Jugar 1.x solamente. Usted debe ser capaz de hacer lo mismo al ejecutar las pruebas:play -Dsetting=foo ~test
Al menos en el Juego 2.1.1 es, posiblemente, para invalidar la configuración de los valores con las variables de entorno, si se establecen. (Para más detalles ver: http://www.playframework.com/documentation/2.1.1/ProductionConfiguration)
Así que usted puede establecer lo siguiente en su
conf/application.conf
:por defecto se utiliza el JDBC-URL definida, a menos que la variable de entorno
DATABASE_URL_DB
define un valor para ella.Tan sólo tiene que configurar su base de datos de desarrollo en la configuración y para la producción o etapas de definir la variable de entorno.
Pero cuidado, esta sustitución NO funciona si pones la variable de referencia dentro de las cadenas entre comillas:
Lugar, simplemente cierro la cita de la sección para ser sustituido, por ejemplo.
En este ejemplo, localhost por defecto, se usará si la variable de entorno
ENV_DATABASE_HOST
no está configurado. (Para más detalles ver: https://www.playframework.com/documentation/2.5.x/ConfigFile#substitutions)Usted puede todavía utilizar el Juego 1.0 config valor método de nomenclatura, en el Juego 2, si usted, cuando usted carga los valores de la configuración, compruebe si
Play.isTest
, y luego el prefijo de las propiedades que carga con ‘la prueba’.. He aquí una corta:Y los relacionados con la config fragmento:
Ahora usted no necesita recordar la configuración de alguna de las propiedades del sistema al ejecutar su e2e de la suite de prueba, y no accidentalmente conectarse a la prod de la base de datos.
Supongo que opcionalmente se puede colocar el
test.
valores en un archivo independiente, que, a continuación, incluir al final de el archivo de configuración principal de pienso.Existe otro enfoque que es para anular Global /GlobalSettings método onLoadConfig y desde allí se puede configurar la configuración de la aplicación con el genérico de configuración y entorno específico de configuración, como el de abajo…
Puede comprobar http://bit.ly/1AiZvX5 para mi ejemplo de aplicación.
Espero que esto ayude.
Off-topic pero si sigues 12-factor-de la aplicación, a continuación, tener diferentes configuraciones de llamada después de entornos es malo:
Another aspect of config management is grouping. Sometimes apps batch config into named groups (often called “environments”) named after specific deploys, such as the development, test, and production environments in Rails. This method does not scale cleanly: as more deploys of the app are created, new environment names are necessary, such as staging or qa. As the project grows further, developers may add their own special environments like joes-staging, resulting in a combinatorial explosion of config which makes managing deploys of the app very brittle
fuente: http://12factor.net/config