2016-01-21 14 views
7

Nel seguente link http://clojure.org/reference/repl_and_main#_launching_a_socket_serverCome posso avviare un socket REPL in Clojure 1.8 da leiningen o boot?

che ha dettagliato informazioni su come avviare presa forma REPL java, ma dal momento che sto usando Lein, così come avviare da Lein. Se partire da boot è buono per correre, potrei anche provare a usare boot.

+0

Leiningen si avvia automaticamente il repl su una presa. Guarda il banner che stampa all'avvio per vedere quale ha selezionato. – dsm

+0

@dsm l'autore sta parlando del nuovo socket REPL in Clojure 1.8, non del REPL di Leiningen. –

risposta

12

Per iniziare una repl presa, è necessario passare questa opzione per la JVM

-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}" 

In Leiningen, aggiungere questo al vostro project.clj.

:jvm-opts ["-Dclojure.server.repl={:port 5555 :accept clojure.core.server/repl}"] ; notice that the map is not quoted. 

e in avvio, esportare la variabile d'ambiente BOOT_JVM_OPTIONS

export BOOT_JVM_OPTIONS='-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"' 

Una volta che il REPL è in esecuzione, è possibile eseguire telnet da un terminale diverso per la connessione al REPL presa. REPLception!

$ telnet 127.0.0.1 5555 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
user=> (+ 1 1) 
2 
user=> 
+0

è chiaro per l'avvio come "export" è un comando linux e so come usarlo. ma per lein, usi ": jvm-opts ...", dovremmo metterlo? mettilo in project.clj? –

+0

sì, lo aggiorna. –

1

avvio ha un imminente socket-server task. A partire dal boot 2.7.1, una versione che include questa attività non è stata ancora rilasciata.

Nel frattempo è possibile utilizzare i seguenti comandi per avviare Socket REPL. Per avviare un processo di Clojure con un Socket REPL in ascolto sulla porta 50505 utilizzando avvio, utilizzare:

boot -i "(do (require 'clojure.core.server) (clojure.core.server/start-server {:port 50505 :name :repl :accept 'clojure.core.server/repl}))" wait 

Utilizzando Leiningen:

JVM_OPTS='-Dclojure.server.myrepl={:port,50505,:accept,clojure.core.server/repl}' lein repl 

Utilizzando un dolore Clojure vaso:

java -Dclojure.server.myrepl="{:port 50505 :accept clojure.core.server/repl}" -jar ~/.m2/repository/org/clojure/clojure/1.8.0/clojure-1.8.0.jar 
Problemi correlati