Ответ 1
Вы можете получить доступ к текущему Приложению через
play.api.Play.current()
чтобы узнать режим try
play.api.Play.current().mode()
или просто используйте
play.api.Play.isDev(play.api.Play.current())
Из приложения Play 2.1, как бы я программным образом определял, в каком режиме работает приложение (т.е. Development vs. Production)?
Например, было бы полезно иметь возможность сделать что-то подобное изнутри шаблона:
<p>@if(__some_play_API_call__ == Dev) { <b>Development mode</b> }</p>
В документации по API версии 2.0 кажется, что свойство mode
класса play.api.Application
... я не уверен, как получить экземпляр текущего выполняющегося приложения.
Вы можете получить доступ к текущему Приложению через
play.api.Play.current()
чтобы узнать режим try
play.api.Play.current().mode()
или просто используйте
play.api.Play.isDev(play.api.Play.current())
В Play 2.5.x метод play.Play.isDev()
устарел, нужно использовать инъекцию зависимостей:
import javax.inject.Inject;
public class Example {
@Inject
private play.Environment environment;
public void myMethod() {
if (environment.isDev()) {
...
}
}
}
Или эквивалентно в Scala:
class ErrorHandler @Inject()(environment: Environment) {
def myMethod() = {
if (environment.isDev) {
...
}
}
}
environment.isDev()
возвращает логическое значение, которое можно легко перейти к шаблону. Не нужно использовать неявные переменные, как описано здесь.
В игре 2.3.X вы также можете проверить через:
play.Play.isProd()
play.Play.isDev()
play.Play.isTest()
В Play 2.5 с использованием Scala есть значение context.environment.mode
Enumeration
из play.api.Mode
с одним из значений Dev, Test, Prod
.
Для инъекции зависимостей времени компиляции у вас есть context
, доступный в вашем загрузчике приложений, и если вы расширяете BuiltInComponentsFromContext
, вы можете напрямую использовать (вставить) environment.mode