A quanto ho capito, quando eseguo il comando nrepl-jack-in
viene caricato un REPL insieme a tutte le dipendenze definite in project.clj. Se poi aggiorno project.clj per aggiungere una nuova dipendenza, devo uccidere il server ed eseguire nuovamente nrepl-jack-in
o c'è modo di aggiornare le dipendenze nel REPL corrente?Come aggiorno le dipendenze Clojure quando si lavora con nrepl.el?
risposta
Aggiornamento: Forse c'è qualche speranza, Vedere https://github.com/cemerick/pomegranate
precedenza:
La risposta è sì - che c'è bisogno di riavviare il processo di JVM.
Non sono a conoscenza di un buon modo per aggiornare le dipendenze in un live repl. Leiningen (chiamato da nrepl-jack-in) gestirà le dipendenze e imposterà il classpath solo al riavvio. Cercare di fare qualcosa di dinamico e intelligente è orribilmente fragile.
Il testo ha colpito qui di seguito è di fatto vero, ma su di un momento di riflessione sembrava tale consulenza male mi hanno segnato in su come tale ...
Se si dispone di una dipendenza locale (ad esempio file jar) si potrebbe utilizzare il lungo periodo
deprecato funzione
add-classpath
presso il repl. Ma entrerai nella caverna infestata dai draghi dei classloader java.
Prima che il melograno esistesse, ho scritto la mia libreria per caricare dinamicamente le dipendenze.
https://github.com/bmillare/dj
Dopo l'uscita di lein2 e come sotto le coperte possono utilizzare pomegrante, ho riscritto dj di utilizzare questo sotto. Quindi, anche se non si usa 'dj', potrebbe essere utile come riferimento per vedere che cosa sta facendo.
Il riavvio del REPL sembra essere il modo più semplice. Questo può essere fatto con :
M-x cider-restart
Ciò appare anche per realizzare un lein deps
. Pertanto, l'intero processo di aggiungere una nuova dipendenza comporta semplicemente l'aggiunta di require
a il project.clj
e quindi il richiamo di cider-restart
.
Altro (molto conveniente) modo è usare clj-refactor. Aggiunta del artefatto (C-c m a p
o cljr-add-project-dependency
) richiederà la versione che si desidera, automaticamente mettere la nuova dipendenze nel file project.clj
e ricaricare la sessione.
- 1. Limitazioni di JRuby quando si lavora con le classi Java
- 2. Le migliori strategie quando si lavora con micro ORM?
- 3. Come evitare la ripetizione quando si lavora con tipi primitivi?
- 4. Non può compilare il codice quando si lavora con CALayer
- 5. System.Type.Missing o System.Reflection.Missing.Value quando si lavora con Office PIA?
- 6. Contesto di attivazione perso quando si lavora con WinForm?
- 7. Come si lavora con istanze QueryOver separate?
- 8. git: come ottenere le modifiche correttamente in master quando si lavora con i sottomoduli
- 9. Come utilizzare le gemme non in un Gemfile quando si lavora con bundler?
- 10. Come aggiorno le proprietà su shopify line_item
- 11. nrepl.el e leiningen 2 namespace predefinito?
- 12. Schermata iniziale Durandal quando si lavora con promesse
- 13. È persistence.xml richiesto quando si lavora con Spring e Hibernate?
- 14. Come si risolvono le dipendenze quando si escono singoli file javascript con grunt?
- 15. Come si relaziona con le dipendenze quando si usano i modelli TeamCity?
- 16. Perché le voci localStorage vengono ripristinate quando aggiorno la pagina?
- 17. Formattazione dell'istogramma asse x quando si lavora con le date usando R
- 18. E 'possibile ignorare le eccezioni JavaScript quando si lavora con WebDriver (HtmlUnit, attacchi Ruby)
- 19. Valgrind riporta memoria 'forse perduta' quando si lavora con le discussioni Boost
- 20. Quali sono le buone pratiche di progettazione quando si lavora con Entity Framework
- 21. dinamico le dipendenze di carico in Clojure REPL
- 22. Come aggiorno correttamente AppWidget?
- 23. Le informazioni di tipo vengono perse quando si lavora con oggetti di tipo alto in Scala
- 24. Quali sono alcuni trucchi chiave quando si lavora con le risposte JSON?
- 25. jQuery prestazioni: $ ('# selettore') LIVE() vs legare manualmente (quando si lavora con le richieste Ajax)
- 26. Come si definiscono i tasti quando si lavora con "Codice EF prima"?
- 27. Come si lavora con l'ordine con la funzione R "per"?
- 28. Come si configurano le dipendenze proprietarie per Leiningen?
- 29. Come si installano le dipendenze quando si compila il codice haskell?
- 30. Come utilizzare Flyway quando si lavora con i rami di funzionalità