Render apache velocity template for ring in clojure.
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


A Clojure library designed to render velocity template for ring/compojure in clojure.


Adds dependency in leiningen project.clj:

  [ring.velocity "0.1.2"]

Create a directory named templates in your project directory to keep all velocity templates.

Create a template templates/test.vm:

  hello,$name,your age is $age.

Use ring.velocity in your namespace:

  (use '[ring.velocity.core :only [render]])

Use render function to render template with vars:

  (render "test.vm" :name "dennis" :age 29)

The test.vm will be interpreted equals to:

  hello,dennis,your age is 29.

Use ring.velocity in compojure:

  (defroutes app-routes
     (GET "/" [] (render "test.vm" :name "dennis" :age 29))
     (route/not-found "Not Found"))

And if you just want to get a rendered template without variables,you can use template-resources to compile a route into compojure:

  (use '[ring.velocity.core :only [render template-resources]])
  (defroutes app-routes
     (GET "/" [] (render "test.vm" :name "dennis" :age 29))
     (template-resources "/vm")
     (route/not-found "Not Found"))

Then you can access any velocity template files in templates folder by http://host:port/vm/${template_file_name}. It is just like the resources in compojure except it only serve velocity template requests.

Use ring.velocity in ring:

  (use '[ring.util.response])
  (response (render "test.vm" :name "dennis" :age 29))

Custom velocity properties,just put a file named to your classpath or resource paths.The default velocity properties is in src/default/

A demo project with compojure is in demo folder.


Copyright © 2012 dennis zhuang[]

Distributed under the Eclipse Public License, the same as Clojure.