#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
Надеюсь, это поможет