Not Clojure specific, the Spring framework has "refreshable beans" support which enables partial code swap on production systems (http:// tiny.cc/3zctU), its much more limited than Erlang but still might proove to be useful.
On Sep 4, 9:30 pm, tmountain <tinymount...@gmail.com> wrote: > I just put together some example code to demonstrate "hot updates" > with Clojure. > > http://paste.lisp.org/display/86576 > > It allows you to connect to a REPL via port 12345 and dynamically > update things as necessary. To address the issue of updating multiple > definitions at once, you'd do something like the following (after > modifying main.clj): > > tra...@travis-desktop:~$ nc localhost 12345 > clojure.core=> (require 'main :reload) > > Right now the main thread simply prints message in a loop, but I've > tried changing main.clj to modify both the print-hello function and > value of message, and it worked great. You can also connect to the > repl and do something like the following, but it doesn't provide the > same safety as the seemingly atomic require function does. > > clojure.core=> (ns main) > nil > main=> (def message "hola") > #'main/message > > -Travis > > On Sep 4, 4:22 am, Krukow <karl.kru...@gmail.com> wrote: > > > I was thinking about the capability of changing production systems on > > the fly. E.g. by having an accessible repl in a running production > > system. > > > If you have a bug in a function, you can fix it by re-def'ing it - > > that is great. However, suppose you want to do a system upgrade where > > you want to change several things. Now you could just re-def each var > > one at a time, but this might produce an inconsistent program in the > > interval where you have re-def'ed some but not all vars. > > > This first thing you would want is sort-of a atomic update of all > > vars, similarly to what is possible with refs. Is this possible > > somehow? If not are there any techniques or best practices for these > > "system upgrades"? > > > /Karl --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---