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

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

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

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

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

Это отлично работает для меня.

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

ex: 20 май 2011 21:09:16 play.Logger warn ВНИМАНИЕ: Отсутствуют include: @include.prod

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

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