2011-10-19 34 views
14

使用环(和lein-ring工具) - 根据在开发中运行的文档,我可以从“resources”等提供静态文件 - 但是 - 何时我通过lien uberwar封装了一些东西,我不知道如何在容器中运行时提供这些文件。我在wrap-resource上看到冲突的文档,或者设置:resource-path,但似乎没有任何工作。使用ring/compojure提供静态文件 - 来自战争

+0

对于Google App Engine,我只能直接在'war /'目录中找到静态文件。模板文件(我使用大豆)实际上停留在'resource /'目录,并以某种方式被编译到war目录中。我想这是不可能的/在你的情况下不起作用? – Paul

回答

23

按的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

+2

是否应该是'资源/公共'而不是'resrouce/public'? – kristianlm

+0

是的,看起来像有人纠正它。 –

+1

抱歉迈克尔,我不能拼!我想说的是'resources'目录应该是复数形式。 – kristianlm

18

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

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

您需要一个相当新的lein-ring来正确工作;老版本的lein-ring不支持公共资产的资源目录。