Sainpas selville asian, jota pidin todennäköisenä mutta jota ei ole Compojuren dokumenteissa selitetty kovin selvästi: defroutes/routes/routing -makrojen tuloksen lisäksi myös niiden syötteet ovat Ring-handlereita. Ainoa ero tavalliseen Ring-handleriin on se, että argumenttifunktioiden ei tarvitse palauttaa response-mappia, vaan ne voivat palauttaa myös nil-arvon, mikä tarkoittaa, ettei handler halua käsitellä pyyntöä vaan se pitää antaa seuraavalle.
Tämä on olennaista siksi, että useimmat Ring-middleware-komponentit ovat funktioita, jotka ottavat syötteeksi handlereita ja palauttavat niistä uusia handlereita. Niinpä Ring-middlewarea voi käyttää kaikille routeille, tai vain yhdelle, tai oletettavasti myös yhdelle kontekstille. Asiat eivät ole ihan niin hyvin kuin Pythonissa: dekoraattorisyntaksin puuttuessa haluttu handlereiden toimintatapa pitää rakentaa funktiokutsulausekkeina.
Clojuren dokumentaatiossa on joskus outoja omissioita. Törmäsin esimerkiksi samaan ongelmaan, mistä täälläkin valitetaan: https://fp21st.wordpress.com/2013/11/22/clojure-nrepl-connection-with-leiningen/ Tietysti, jokainen ajaa clojure-kehitysympäristöään omalla tavallaan, mutta minä suosin sitä, että olen enimmäkseen shellissä, koska sieltä voi ajaa helposti muutakin kuin clojure-koodia. Siksi on olennaista, että voin käynnistää lein-prosessini taustalle, ja ottaa siihen sitten yhteyttä halutessani nREPLin kautta.
Hassua, satun olemaan tilassa, jossa esitetään tiernapoikia, tässä tapauksessa -tyttöjä.