Ensin virittelin VimClojuren toimimaan. Sitten mukaan tuli upea pikkuapulainen Leiningen. Leiningen toimii pienenä Maven-ohjaajana, joka erikoistuu sitten Clojuren saloihin. Linkittämäni oppaan nopeasti silmäilemällä jo havaitsee, miten vähän Leiningenin kanssa tarvitsee keskittyä Clojure-ympäristön käyttöönottoon. Periaatteessa lein new
ja git init
riittävät, ja ollaan taas kokeilemassa uusia Clojure-juttuja!
VimClojure
VimClojuresta olen pariin kertaan puhunut. Edellisten postauksien välissä asensin sen tämän oppaan mukaan, ja otin myös Screenin avulla toimivan serverinohjailun käyttöön. Ratkaisuna tuo on melko hyvä, mutta ei täydellinen. Se toimii moitteettomasti kyllä ilman Leiningeniä! Mutta Leiningen on fiksu ja kypsä ratkaisu projektien hallintaan, joten haluaisin jatkossa tehdä hommia sen kanssa. On siis aika säätää systeemejä.
Leiningen
Kun googlaa Leiningenin käytöstä VimClojuren kanssa, saa eteensä yleensä lein-nailgun
-nimistä lisäosaa, joka kuulostaa herkulliselta! Lein hoitaa jo itsessään lisäosat ja -kirjastot, ja nyt se voisi uudella komennolla avata aina taustalle uuden nailgun-serverin projektiin liittyvillä jarreilla. No, sitä se ei tehnyt, vaikka miten olisi voinut. Tappelin sen kanssa pari päivää, kunnes ajattelin, että otetaan helpompi lähestymistapa, joka ei ole niin kiva.
Verkossa löytyvistä oppaista myös löytyy ohjeita, kuinka leiningenin kirjastoihin kannattaa lisätä nailgunin lisäksi tuo vimclojuren vaatima jar. Näin leiningen hoitaisi itse kaikki tarpeet. Tämä ei kuitenkaan missään vaiheessa lähtenyt toimimaan, VimClojure vain valittelee, ettei mikään suju. Ilmeisesti vain yksi jar sisältää sopivan aineksen, ja se jar tuli leiningettömän VimClojuren mukana. Sitä ei tunnu löytävän Leiningenin hallinnoimista repositoryistä, joten manuaalinen lisäily tuli tarpeeseen.
Päädyin seuraavanlaiseen aliakseen, joka on saanut vaikutteita Lisp4Fun -blogista.
alias ng='java -server -cp "src:classes:lib/*:lib/dev/*: /home/progo/koodi/vimclojure-2.2.0.jar" vimclojure.nailgun.NGServer 127.0.0.1 &'
Toivottavasti tämä ratkaisu kestää myös tulevat Clojuren versiot, sekä muut projektit. Itselleni muistutukseksi vielä, että tämä menetelmä ei edellytä project.clj
:hin mitään erityistoimia.