Servieren statische Dateien mit Ring/Compojure - aus einem Krieg
Frage
Verwenden von Ring (und den Lein -Ring -Tools) - Ich kann statische Dateien aus "Ressourcen" usw. gemäß den Dokumenten beim Ausführen in der Entwicklung erhalten - wenn ich Dinge über Lien Uberwar verpackte, habe ich keine Ahnung, wie man es macht Es serviert diese Dateien beim Ausführen in einem Container. Ich sehe widersprüchliche Dokumente zur Wrap-Ressource oder Setting: Ressourcenpfad, aber keiner scheint zu funktionieren.
Lösung
Gemäß Kompojure Erste Schritte Wiki, stellen route/resources
Unter Ihren Wegen:
(defroutes main-routes
(GET "/" [] "<h1>Hello World Wide Web!</h1>")
(route/resources "/")
(route/not-found "Page not found"))
... und erstellen Sie dann einen Ordner resources/public
Setzen Sie in Ihrem Projekt Ihre statischen Dateien dort ein. Wenn Sie sich auf diese Dateien beziehen, ist die /resources/public
ist implizit, damit Sie so etwas schreiben können wie: (include-css "/css/site.css")
.
Andere Tipps
compojure.route/resources
sollte tun, was du willst.
Setzen Sie einfach die Dateien ein resources/public
Und dann eine Route hinzufügen (resources "/")
gegen Ende Ihrer Routenliste.
Sie benötigen ein ziemlich aktuelles Lein-Ring, damit dies richtig funktioniert. Ältere Versionen von Lein-Ring unterstützen das Ressourcenverzeichnis nicht für öffentliche Vermögenswerte.