Stuart Sierra has written a fantastic article on his particular pattern for 
writing and testing Clojure code:
http://thinkrelevance.com/blog/2013/06/04/clojure-workflow-reloaded

There is some commentary on Hacker News about it here:
https://news.ycombinator.com/item?id=5819487

I'll include some of the salient points

Therefore, after every significant code change, I want to restart the 
application from scratch. But I don't want to restart the JVM and reload 
all my Clojure code in order to do it: that takes too long and is too 
disruptive to my workflow. Instead, I want to design my application in such 
a way that I can quickly shut it down, discard any transient state it might 
have built up, start it again, and return to a similar state. And when I 
say quickly, I mean that the whole process should take less than a second.


To achieve this goal, I make the application itself into a transient 
object. Instead of the application being a singleton tied to a JVM process, 
I write code to construct instances of my application, possibly many of 
them within one JVM. Each time I make a change, I discard the old instance 
and construct a new one. The technique is similar to dealing with virtual 
machines in a cloud environment: rather than try to transition a VM from an 
old state to a new state, we simply discard the old one and spin up a new 
one.


My questions to the fantastic hacker new communities are:
(1) Have you used this technique on your project?
(2) What is your experiences using this technique?
(3) Stuart hints that particular projects have to be structured to be able 
to better use this technique - can you point to a particular project that 
is well suited to this?


 

-- 
-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to