2011-05-20 4 views
13

¡Hay alguna forma de usar variables de entorno en la obra! archivo application.conf? Algo como esto:¿Hay alguna forma de sustituir variables de entorno en la aplicación application.conf de playframework?

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

no quiero a codificar la URL en mi application.conf, ya que contiene las credenciales que el desarrollador no debería tener acceso.

+1

No entiendo cómo puede ocultar esta información? Si tiene acceso a la variable env, significa que puede leer su valor, ¿no es así? – mandubian

Respuesta

8

${ENV_VARIABLE_KEY} resuelve cualquier variable que esté configurada en su entorno. no tiene que especificar "env" prefijo a menos que sea parte de tu clave.

+1

Sí. Esta es una nueva característica añadida para jugar después de haber publicado mi pregunta original. Muy genial. –

3

Tengo el mismo problema. Mi solución:

  • vamos application.conf con propiedades únicas para el desarrollo local y lo almacenan en un VCS (SVN, Git, ...) para su equipo de desarrollo
  • añadir una línea en el archivo application.conf : "@ include.prod = prod.conf"
  • el archivo prod.conf contiene solo% prod. * propiedades
  • crea el archivo prod.conf directamente en el servidor de prod (o lo almacena en un VCS diferente al de su aplicación , donde solo las personas permitidas pueden leerlo/escribirlo)

Funciona bien para mí.

que sólo añade un mensaje para el equipo de desarrollo cuando se inicia la aplicación:

ex: 20 mai 2011 21:09:16 play.Logger advierten ATENCIÓN: Falta incluyen: @ include.prod

Realmente no es un problema. Simplemente informar a su equipo de desarrollo que este mensaje no es un problema y que no elimine la línea "@ include.prod" en application.conf

creo que sirve

12

Todas las variables dentro de $ {} se resuelven utilizando la siguiente fuentes:

  • $ {} Application.Path equivalente a Play.applicationPath.getAbsolutePath()
  • $ {} play.path equivalente a Play.frameworkPath.getAbsolutePath()
  • cualquier otra proviene de Sistema. getProperty.

Por lo que podría agregar estos como -Dkey = nombrar parámetros al iniciar el juego! con sus credenciales secretas específicas para su entorno.

+0

Intenté agregar el primer punto, pero se produjo una excepción en tiempo de ejecución: 'No se pudo resolver la sustitución a un valor: $ {application.path}' –

+0

thx very mach;) – Lola

Cuestiones relacionadas