2013-05-30 2 views
3

Я создал проект, используя lein, а затем в корне проекта я создал каталог, чтобы разместить статический контент.Обслуживание статического файла из compojure и ring

Однако статический контент не обслуживается, как ожидалось.

Вот defroutes:

(defroutes greeter 
    (GET "/greeter/working" [] 
    (html 
     [:html 
     [:head [:tile "bla"]] 
     [:body [:image "oops.jpg"]] 
     ] 
    ) 
    ) 
    (GET "/greeter/sayhi" [] "say hi") 
    (GET "/greeter/" [] "top level") 
    (route/files "/" {:root (str (System/getProperty "user.dir") "\\public")}) 

(defn -main [] 
    (run-jetty greeter {:port 3000 :join? false})) 
+0

Что вы имеете в виду Вы не нашли 404? Кроме того, вы в Windows? – noahlz

ответ

7

Убедитесь, что вы знаете, где "user.dir" на самом деле находится. Это не ваш домашний каталог, это рабочий каталог вашего приложения, обычно там, где вы запустили lein ring server.

Я создал новый проект Compojure со следующим файлом handler.clj отлаживать это и проверить, где поместить public/: «не служил, как и ожидалось»

(ns static-files.handler 
    (:use compojure.core) 
    (:require [compojure.handler :as handler] 
      [compojure.route :as route])) 

(def root (str (System/getProperty "user.dir") "/public")) 

(defroutes app-routes 
    (GET "/" [] "Hello World") 
    (route/files "/" (do (println root) {:root root})) 
    (route/resources "/") 
    (route/not-found "Not Found")) 

(def app 
    (handler/site app-routes))