使用ring / compojure提供静态文件 - 来自战争

时间:2011-10-19 04:15:45

标签: clojure leiningen compojure ring

使用ring(以及lein-ring工具) - 我可以在开发中运行时根据文档提供来自“资源”等的静态文件 - 但是 - 当我通过lien uberwar打包时我不知道如何在容器中运行时使它服务于这些文件。我在wrap-resource上看到了冲突的文档,或者设置了:resource-path但是似乎都没有。

2 个答案:

答案 0 :(得分:24)

根据Compojure的Getting Started 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")

这是an example that deploys to cloudbees

答案 1 :(得分:20)

compojure.route/resources应该做你想做的事。

只需将文件放入resources/public,然后在路线列表末尾附近添加路由(resources "/")

你需要一个相当新的lein-ring才能正常工作;旧版lein-ring不支持公共资产的资源目录。