On Fri, May 25, 2012 at 1:46 PM, Phil Hagelberg <p...@hagelb.org> wrote:
> On Fri, May 25, 2012 at 1:41 PM, Karl Krukow <karl.kru...@gmail.com> wrote:
>> If I'm embedding swank clojure server in non-development, the code would 
>> need to start up swank - how would I do that?
> Just add swank as a non-dev dependency. The swank-clojure readme
> actually covers how to do embedding.

Specifically:

Add a dependency on [swank-clojure "1.4.2"]

Then in your code:

(swank.swank/start-server :host "0.0.0.0" :port 4567) ;; use whatever
port you want, default is 4005

You can programmatically stop the server with:

(swank.swank/stop-server)

The :host specifies the IP (or hostname) to listen on so if you want
external access you'll need to listen on an IP that is externally
accessible. If you listen on "0.0.0.0" then it'll listen on any IP
address so you can REPL in from outside as well as directly on server
itself (on 127.0.0.1). Our servers have multiple IP addresses and this
caught me out at first when working with our data center folks and
setting up VPN/DMZ access to the host/port.

Another thing that was a bit of a problem for us was that swank.swank
does a bunch of stuff at initialization that got in our way (I don't
remember details) so we actually resolve the symbols at runtime so
swank.swank is only loaded when we actually start the swank server:

(defn start-swank
  "If a swank port is defined for this environment, attempt to start a
   swank server on that port. Will throw an exception if it's already
   running on that port etc."
  []
  (require 'swank.swank)
  (when-let [start-server (resolve (symbol "swank.swank/start-server"))]
    (start-server :host "0.0.0.0" :port (:swank-port @my-settings))))

my-settings is a delayed map containing application configuration data
(we delay it because the app needs to bootstrap part way in order to
read the configuration which gets stored in the map). We use different
swank ports on different machines to avoid confusion when
slime-connect'ing in from Emacs.
-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
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

Reply via email to