2012-04-19

Migrate "Simple Web App" to Clojure 1.3.0

Another trial to migrate Mark McGranaghan's awesome example of Developing and Deploying a Simple Clojure Web Application to Clojure 1.3.0. First, project.clj: remove clojure-contrib and refresh the revisions...
defproject adder "0.0.1"
  :description "Add two numbers."
  :dependencies
  [[org.clojure/clojure "1.3.0"]
   [ring/ring-core "1.1.0-RC1"]
   [ring/ring-devel "1.1.0-RC1"]
   [ring/ring-jetty-adapter "1.1.0-RC1"]
   [compojure "1.0.2"]
   [hiccup "1.0.0-RC2"]]
  :dev-dependencies
  [[lein-run "1.0.0-SNAPSHOT"]])
hiccup.page-helper became hiccup.page, and we have to add ring.middleware.params after Compojure 0.6.0!!! (Really painful to find out why POST isn't working anymore.) In core.clj:
(:use [compojure.core]
      [hiccup.core]
      [hiccup.page]
      [ring.middleware.reload]
      [ring.middleware.stacktrace]
      [ring.util.response]
      [ring.middleware.file]
      [ring.middleware.file-info]
      [ring.middleware.params :only [wrap-params]])

; and for app ...
(def app
  (-> #'handler
      (wrap-params handler)
      (wrap-utf)
      (wrap-file "public")
      (wrap-file-info)
      (wrap-request-logging)
      (wrap-if development? wrap-reload '[adder.middleware adder.core])
      (wrap-bounce-favicon)
      (wrap-if production?  wrap-failsafe)
      (wrap-if development? wrap-stacktrace)))
Others are just like they were in Mark's brilliant tutorial. The source code is available here.

沒有留言: