2011-10-19 8 views
14

Utilizando el anillo (y las herramientas Lein-Ring) - Puedo servir archivos estáticos de "recursos" etc. según los documentos cuando se ejecuta en desarrollo - sin embargo - cuando Integro cosas a través de lien uberwar. No tengo idea de cómo hacer que sirva esos archivos cuando se ejecuta en un contenedor. Veo documentos en conflicto en wrap-resource o setting: resource-path pero ninguno parece funcionar.Sirviendo archivos estáticos con anillo/compojure - de una guerra

+0

Para Google App Engine solo pude encontrar los archivos estáticos directamente en el directorio 'war /'. Los archivos de plantilla (yo uso soya) en realidad permanecen en el directorio 'resource /' y de alguna manera se compilan en el directorio war. Supongo que esto no es posible/no funciona en su caso? – Paul

Respuesta

23

Según Getting Started Wiki de Compojure, poner route/resources por debajo de sus caminos:

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

... y luego, cree una carpeta resources/public en su proyecto, ponga sus archivos estáticos allí. Cuando se refiere a estos archivos, el /resources/public es implícito, por lo que puede escribir algo como: (include-css "/css/site.css").

Aquí está an example that deploys to cloudbees.

+2

se supone que es 'resources/public' en lugar de' resrouce/public' – kristianlm

+0

Sí, parece que alguien lo corrigió. –

+1

lo siento Michael, no puedo deletrear! Intenté decir que el directorio 'resources' se supone que está en plural, creo. – kristianlm

18

compojure.route/resources debe hacer lo que quiera.

Simplemente ponga los archivos en resources/public y luego agregue una ruta (resources "/") cerca del final de la lista de rutas.

Necesita un lein-ring bastante reciente para que esto funcione correctamente; las versiones anteriores de lein-ring no son compatibles con el directorio de recursos para los activos públicos.

Cuestiones relacionadas