Подтвердить что ты не робот

Как определить режим приложения в Play 2.x

Из приложения 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... я не уверен, как получить экземпляр текущего выполняющегося приложения.

4b9b3361

Ответ 1

Вы можете получить доступ к текущему Приложению через

play.api.Play.current()

чтобы узнать режим try

play.api.Play.current().mode()

или просто используйте

play.api.Play.isDev(play.api.Play.current())

Ответ 2

В 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() возвращает логическое значение, которое можно легко перейти к шаблону. Не нужно использовать неявные переменные, как описано здесь.

Ответ 3

В игре 2.3.X вы также можете проверить через:

play.Play.isProd()
play.Play.isDev()
play.Play.isTest()

Ответ 4

В Play 2.5 с использованием Scala есть значение context.environment.mode Enumeration из play.api.Mode с одним из значений Dev, Test, Prod.
Для инъекции зависимостей времени компиляции у вас есть context, доступный в вашем загрузчике приложений, и если вы расширяете BuiltInComponentsFromContext, вы можете напрямую использовать (вставить) environment.mode