My Clojure, MongoDB, Ring, and Compojure development setup

I wrote a few days ago about my Clojure and Compojure setup that automatically reloads modified files while I am developing. I have added support for accessing MongoDB using the congomongo library. My new project.clj file:
(defproject kbsportal "0.1.0"
:description "test using Compojure for"
[[compojure "0.4.0-SNAPSHOT"]
[ring/ring-devel "0.2.0-RC2"]
[ring/ring-httpcore-adapter "0.2.0-RC2"]
[ring/ring-jetty-adapter "0.2.0-RC2"]
[ring/ring-servlet "0.2.0-RC2"]
[org.clojars.liebke/congomongo "1.0.0"]]
:main kbsportal)
My Compojure setup file kbsportal.clj:
(ns kbsportal
(:use compojure.core
(:use ring.middleware.reload)
(:use ring.middleware.stacktrace)
(:use somnium.congomongo)
(:use mongo)
(:use nlp))

;; set up test use of congomongo + MongoDB:
:db "notes", :host "") ; notes contain title, content, and words

(defroutes test-routes
(GET "/" []
(str "<h1>Hello World" (foo) "</h1>"
(ANY "*" []
{:status 404, :body "<h1>Page not found</h1>"}))

(def app
(-> (var test-routes)
(wrap-reload '(kbsportal))
(wrap-reload '(nlp))
(wrap-reload '(mongo))

(defn dev []
(run-jetty #'app {:port 8080}))
The example file nlp.clj has not changed since my previous blog, and here is the source file mongo.clj for reading all notes from an existing MongoDB data store:
(ns mongo
(:use somnium.congomongo))

;; expect notes to contain :title and :content
(defn get-all-notes []
(let [notes (fetch :notes :only [:title :content])]
(for [note notes]
(str "<b>" (:title note) "</b> " (:content note) "<br/>")))))
Please refer to my previous blog for directions for running this.


  1. How did you add the first notes to your db to test the output? Just connect to the running mongodb and add them on the console interface?


Post a Comment

Popular posts from this blog

Custom built SBCL and using spaCy and TensorFlow in Common Lisp

I have tried to take advantage of extra time during the COVID-19 pandemic

GANs and other deep learning models for cooking recipes