Вопрос по playframework – Поддерживает ли Play отдельные файлы маршрутов для каждой среды - dev, uat, prod?

6

Возможно ли иметь следующую маршрутизацию в режиме разработки:

GET  /       controllers.Assets.at(path="/public/ui/dev", file="index.html")
GET  /*file  controllers.Assets.at(path="/public/ui/dev", file)

и следующее в производстве:

GET  /       controllers.Assets.at(path="/public/ui/prod", file="index.html")

Ваш Ответ

3   ответа
1

Решение выше работает хорошо, но означает, что вы дублируете маршруты, например нестатические ресурсы в вашемroutes а такжеprod.routes файлы.

Если вы хотите сохранить один файл маршрутов, вы можете пойти по пути, которыйjohanandren предлагает. Я использую этот метод довольно успешно, и опубликовал суть этого метода вhttps://gist.github.com/drcharris/2e3518b212adfa1b6a7f

Обновленная версия ConfigurableAssets для PlayFramework 2.5gist.github.com/cessationoftime/... cessationoftime
0

Не из коробки. Но здесь у вас есть две идеи о том, как вы можете достичь той же функциональности:

  • написать тонкую оболочку вокруг Assets.at, которая смотрит на текущий env и обрабатывает его по-другому, а затем просто вызывает Assets.at с измененным путем
  • переопределить, как выполняется маршрутизация в Global, это немного сложно сделать, если вы хотите продолжать использовать DSL-маршруты для файлов prod и dev, как вы должны выяснить, чтобы их скомпилировать
9

Да, это возможно. Объявите ваши dev-маршруты вconf/routes, но объявите ваши производственные маршруты вconf/prod.routes, Затем, есть файл производственной конфигурации,conf/prod.confи поместите это в это:

include "application.conf"

application.router = "prod.Routes"

Теперь, когда вы запускаете приложение в производство, просто используйте:

path/to/myapp/bin/myapp -Dconfig.resource=prod.conf -Dhttp.port=...
Можно ли использовать этот метод, если оба файла маршрута определяют путь к одному и тому же методу (например,GET / controllers.News.foo())? Я'я получаюReverseNews is already defined as class ReverseNews ошибка компиляции ... rink.attendant.6
Привет Джеймс, спасибо за ваш ответ, это сработало хорошо. reen

Похожие вопросы