Обслуживание статических файлов с кольцом /compojure - от войны

Использование ring (и инструментов lein-ring) - я могу обслуживать статические файлы из "ресурсов" и т.д. в соответствии с документами при работе в процессе разработки, однако - когда я упаковываю вещи через удержание uberwar, я понятия не имею как заставить его обслуживать эти файлы при работе в контейнере. Я вижу конфликтующие документы в wrap-resource или настройке: resource-path, но ни один из них не работает.

Ответы

Ответ 1

Согласно Compojure Приступая к работе Wiki, поставьте route/resources ниже своих путей:

(defroutes main-routes
  (GET "/" [] "<h1>Hello World Wide Web!</h1>")
  (route/resources "/")
  (route/not-found "Page not found"))

... и затем создайте в своем проекте папку resources/public, поместите туда свои статические файлы. При обращении к этим файлам /resources/public неявно, поэтому вы можете написать что-то вроде: (include-css "/css/site.css").

Вот пример, который развертывается в облачных средах.

Ответ 2

compojure.route/resources должен делать то, что вы хотите.

Просто поместите файлы в resources/public, а затем добавьте маршрут (resources "/") в конец списка ваших маршрутов.

Для правильной работы вам требуется довольно недавнее кольцо лейн; более старые версии lein-ring не поддерживают каталог ресурсов для публичных активов.