Как я могу запустить lein repl за пределами проекта?
Прошлой ночью я потратил время на то, чтобы связываться с моим leinigen profiles.clj, чтобы избавиться от всех ошибок, которые были напечатаны при запуске cider в моем проекте. Сегодня я пошел, чтобы запустить репл из терминала (мне нравится держать его открытым, пока я работаю), но это не сработало. Я думал, что это проблема с сидром, поэтому я попробовал это в Emacs, но даже в Emacs, если я не в проекте, repl не запустится.
Вот ошибка:
Error loading refactor-nrepl.middleware: clojure.lang.ArityException: Wrong number of args (4) passed to: StringReader, compiling:(abnf.clj:186:28)
Exception in thread "Thread-4" java.lang.RuntimeException: Unable to resolve var: refactor-nrepl.middleware/wrap-refactor in this context, compiling:(NO_SOURCE_PATH:0:0)
...
Caused by: java.lang.RuntimeException: Unable to resolve var: refactor-nrepl.middleware/wrap-refactor in this context
Мой ~/.lein/profiles.clj
{:user {:plugins [[lein-try "0.4.3"]
[refactor-nrepl "1.1.0"]
[cider/cider-nrepl "0.9.1"]]
:dependencies [[org.clojure/tools.nrepl "0.2.12"]
[acyclic/squiggly-clojure "0.1.4"]
^:replace [org.clojure/tools.nrepl "0.2.12"]
[refactor-nrepl "1.1.0"]]}}
Версии вещей, когда сидр запускается в проекте
; CIDER 0.9.1 (Java 1.8.0_45, Clojure 1.7.0, nREPL 0.2.12)
Я все еще довольно новичок в Clojure, Leinigen, Emacs и т. Д., Поэтому я не уверен, почему все вышеперечисленное заставило мои ошибки сидра исчезнуть, но это произошло. Ошибки сидра, которые я получал, были связаны с тем, что версия nrepl была слишком низкой и не имела определенных установленных компонентов (например, refactor-nrepl).
3 ответа
При запуске repl от lein с помощью lein repl
, он действительно хочет работать в директории проекта lein. Я держу пустой проект Lein с именем clj
вокруг в моем доме режиссёр для этой цели. Таким образом, мои общие зависимости уже есть в project.clj
файл, и lein предварительно настроен так, как мне нравится.
Вы можете начать lein repl
в пустом каталоге, но вы получаете 10-20 сообщений об ошибках каждый раз перед его запуском.
Другой способ - использовать обычный repl, встроенный в файл jar clojure:
~/dummy > cp /home/alan/.m2/repository/org/clojure/clojure/1.8.0-RC1/clojure-1.8.0-RC1.jar .
~/dummy > d *
-rw-rw-r-- 1 alan alan 3935726 Nov 19 14:11 clojure-1.8.0-RC1.jar
~/dummy > java -jar clojure-1.8.0-RC1.jar
Clojure 1.8.0-RC1
user=>
Как видите, я создал пустой каталог с именем dummy
и скопированы в clojure-*.jar
файл. Затем вы можете запустить его с синтаксисом java -jar xxx.jar
и он запустит репл полностью независимо от лейна.
Я также просто держу рабочий проект, который я использую для быстрых / простых сессий repl. Существует плагин lien-oneoff, который должен облегчать работу с простыми однофайловыми проектами, которые могут быть полезны.
Другая вещь, которую вы можете сделать, это настроить загрузочную конфигурацию, чтобы в основном получить репл для работы с
Какая у тебя версия lein, я использую 2.5.3
Я могу начать lein repl
в любом месте.
Shell:~ >: lein repl
nREPL server started on port 52343 on host 127.0.0.1 - nrepl://127.0.0.1:52343
REPL-y 0.3.7, nREPL 0.2.10
Clojure 1.7.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_60-b27
Docs: (doc function-name-here)
(find-doc "part-of-name-here")
Source: (source function-name-here)
Javadoc: (javadoc java-object-or-class-here)
Exit: Control+D or (exit) or (quit)
Results: Stored in vars *1, *2, *3, an exception in *e
user=> Bye for now!
Shell:~ >: lein version
Leiningen 2.5.3 on Java 1.8.0_60 Java HotSpot(TM) 64-Bit Server VM
Shell:~ >: cat .lein/profiles.clj
{:1.2 {:dependencies [[org.clojure/clojure "1.2.0"]]}
:1.3 {:dependencies [[org.clojure/clojure "1.3.0"]]}
:1.4 {:dependencies [[org.clojure/clojure "1.4.0"]]}
:user {:plugins [[lein-immutant "2.0.0-alpha2"]
[lein-clojars "0.9.1"]
[lein-ancient "0.5.5"]
[lein-kibit "0.0.8"]
[lein-try "0.4.3"]
[venantius/ultra "0.2.0"]]
:ultra {:color-scheme :solarized_dark}}}