2010-03-03 6 views

Respuesta

11

Bueno, se puede comenzar con la primera BABA normalmente, entonces (require 'swank.swank) (o tal vez es requerido por defecto ... no estoy seguro), no (swank.swank/start-repl port) con port reemplazado por algún número de puerto y se puede conectar una segunda instancia de baba a ese REPL creado recientemente

lo he hecho hace un momento, con uno de Emacs se conecta a un REPL comenzó con lein swank, (swank.swank/start-repl 4006) en el primer Emacs, Mx-limo conectar en el segundo Emacs (proporcionando 4006 como número de puerto), entonces podría hacer esto:

; first Emacs 
(def x 5) 

; second Emacs 
x ; evaluates to 5 
(def y 1234) 

; first Emacs 
y ; evaluates to 1234 

Cool, no? :-)

Actualización: Ah, por cierto - (swank.swank/start-repl) comienza el nuevo REPL en el fondo y no lo hace bloque de la réplica que se utiliza para ejecutarlo. El valor de retorno es nil, así que no estoy seguro de cómo matar a la nueva REPL ...

(Actualización 2:. Eliminada algo que ya no estoy seguro acerca de)

Actualización 3: Si bien lo anterior método es perfectamente general en la que hace posible conectar un cliente adicional, independientemente de cómo se haya iniciado la instancia original Swank, que podría ser más conveniente para comenzar Swank con el comando

lein swank 4005 "localhost" :dont-close true 

el puerto y anfitrionas argumentos de nombre debe mencionarse explícitamente si se va a pasar :dont-close true. 4005 y "localhost" son los valores predeterminados.

Esto hará que sea posible desconectarse de Swank y volver a conectarlo más tarde, pero también para conectar un número de clientes simultáneamente.

(Acabo de notar que esto es posible al mismo tiempo responder this new question sobre cómo activar las reconexiones a Swank-Leiningen comenzado, sino que de repente se me ocurrió comprobar si :dont-close también causaría conexiones simultáneas para ser aceptado - y lo hace.)

+0

Eso es impresionante. ¡Exactamente lo que estaba buscando! –

+2

'Awesome' es exactamente la palabra correcta. :-) Por cierto, puede usar 'swank.swank/start-repl' para incrustar Swank en cualquier aplicación de Clojure. He leído acerca de gente que lo usa con muy buenos resultados. La principal advertencia es que Swank no se preocupa por la seguridad, por lo que debe tener cuidado de limitar el acceso al puerto de REPL. –

+0

Aparentemente, la funcionalidad descrita en la actualización 3 anterior requiere un swank lein bastante reciente; vea la otra pregunta a la que me he vinculado (y en particular los comentarios sobre mi respuesta) para obtener más detalles. –

Cuestiones relacionadas