2010-03-03 21 views

Répondre

11

Eh bien, vous pouvez commencer votre première BOUE normalement, puis (require 'swank.swank) (ou peut-être il est requis par défaut ... pas sûr), ne (swank.swank/start-repl port) avec port remplacé par un numéro de port et vous pouvez connecter une deuxième instance de BOUE que REPL nouvellement créé.

Je l'ai fait tout à l'heure, avec un Emacs se connecter à un REPL a commencé avec lein swank, (swank.swank/start-repl 4006) dans le premier Emacs, slime-connecter Mx dans le second Emacs (fournissant 4006 que le numéro de port), alors que je pouvais faire ceci:

; first Emacs 
(def x 5) 

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

; first Emacs 
y ; evaluates to 1234 

Cool, non? :-)

Mise à jour: Oh, BTW - (swank.swank/start-repl) commence la nouvelle REPL en arrière-plan et ne le fait pas bloc REPL que vous utilisez pour l'exécuter. La valeur de retour est nil, donc je ne suis pas sûr de savoir comment tuer le nouveau REPL ...

(Mise à jour 2:. Quelque chose Removed Je ne suis pas sûr plus au sujet)

Mise à jour 3: Alors que ci-dessus méthode est parfaitement générale en ce qu'elle permet de connecter un client supplémentaire, indépendamment de la façon dont l'instance Swank original a été commencé, il pourrait être plus pratique pour commencer Swank avec la commande

lein swank 4005 "localhost" :dont-close true 

les arguments nom du port et de l'hôte doit être mentionné explicitement si :dont-close true doit être passé. 4005 et "localhost" sont les valeurs par défaut.

Cela permettra de se déconnecter de Swank et de se reconnecter plus tard, mais aussi de connecter un certain nombre de clients simultanément.

(je viens de remarquer que cela est possible tout en répondant this new question sur la façon de permettre reconnexions à Swank Leiningen-commencé, il vint soudain à moi de vérifier si :dont-close causeraient également des connexions simultanées à accepter - et il le fait.)

+0

C'est génial. Exactement ce que je cherchais! –

+2

'Awesome' est exactement le bon mot. :-) BTW, vous pouvez utiliser 'swank.swank/start-repl' pour intégrer Swank dans n'importe quelle application Clojure - j'ai lu sur les gens qui l'utilisent à très bon effet. La principale réserve est que Swank ne se soucie pas de la sécurité, vous devez donc prendre soin de limiter vous-même l'accès au port du REPL. –

+0

Apparemment, la fonctionnalité décrite dans la mise à jour 3 ci-dessus nécessite un lein swank assez récent; voir l'autre question que j'ai liée à (et en particulier les commentaires sur ma réponse là-bas) pour plus de détails. –