Есть ли какой-либо способ заменить переменные среды в файле application.conf playframework?

#playframework

#playframework

Вопрос:

Есть ли какой-либо способ использовать переменные среды в play! файл application.conf? Что-то вроде этого:

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

Я не хочу жестко кодировать URL-адрес в моем application.conf, потому что он содержит учетные данные, к которым разработчик не должен иметь доступа.

Комментарии:

1. Я не понимаю, как вы можете скрыть эту информацию? Если у вас есть доступ к переменной env, это означает, что вы можете прочитать ее значение, не так ли?

Ответ №1:

Все переменные в $ {} разрешаются с использованием следующих источников:

  • $ {application.path} эквивалентно Play.ApplicationPath.getAbsolutePath()
  • ${play.path} эквивалентно Play.frameworkPath.getAbsolutePath()
  • любые другие исходят из System.getProperty .

Таким образом, вы могли бы добавить их в качестве параметров -Dkey=name при запуске Play! вашими секретными учетными данными, специфичными для вашей среды.

Комментарии:

1. Я попытался добавить первый маркер, но произошло исключение во время выполнения: Could not resolve substitution to a value: ${application.path}

Ответ №2:

${ENV_VARIABLE_KEY} разрешает любые переменные, которые установлены в вашей среде. вам не нужно указывать префикс «env.», если он не является частью вашего ключа.

Комментарии:

1. Ага. Это новая функция, добавленная в play после того, как я опубликовал свой первоначальный вопрос. Очень круто.

Ответ №3:

У меня та же проблема. Мое решение :

  • разрешите application.conf использовать только свойства для локальной разработки и сохраните его в VCS (SVN, Git, …) для вашей команды разработчиков
  • добавьте строку в файл application.conf : «@include.prod=prod.conf».
  • файл prod.conf содержит только %prod.* properties
  • создайте файл prod.conf непосредственно на сервере prod (или сохраните его в другом VCS, отличном от вашего приложения, где его могут читать / записывать только разрешенные пользователи)

У меня это работает нормально.

Он просто добавляет сообщение для команды разработчиков при запуске приложения :

пример: 20 мая 2011 21:09:16 игра.Регистратор предупреждает ВНИМАНИЕ: Отсутствует включение: @include.prod

На самом деле это не проблема. Просто сообщите своей команде разработчиков, что это сообщение не является проблемой, и не удаляйте строку «@include.prod» в application.conf

Надеюсь, это поможет