Как я могу запустить lein repl вне проекта?

Вчера вечером я потратил некоторое время на то, чтобы возиться с моим leinigen profiles.clj, чтобы избавиться от всех ошибок, которые печатались при запуске сидра в моем проекте. Сегодня я пошел, чтобы начать отвечать с терминала (я люблю оставлять его открытым, пока работаю), но это не сработало. Я подумал, что это проблема с сидром, поэтому попробовал это в Emacs, но даже в Emacs, если я не участвую в проекте, ответ не запускается.

Вот ошибка:

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).


person Jeff Engebretsen    schedule 19.11.2015    source источник


Ответы (3)


При запуске ответа из lein с использованием lein repl он действительно хочет запускаться в каталоге проекта lein. Для этой цели я храню в своем домашнем каталоге пустой проект lein с именем clj. Таким образом, мои общие зависимости уже присутствуют в файле project.clj, а lein предварительно настроен так, как мне нравится.

Вы можете запустить lein repl в пустом каталоге, но каждый раз перед запуском вы получаете 10-20 сообщений об ошибках.

Другой способ - использовать простой REP, встроенный в файл 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, и он запустит ответ полностью независимо от lein.

person Alan Thompson    schedule 19.11.2015
comment
Я знаю, что могу сделать пустой проект, что, возможно, и сделаю. Раньше я мог запускать где угодно, а теперь не могу. - person Jeff Engebretsen; 20.11.2015

Я также просто сохраняю проект scratch, который использую для быстрых / простых сессий ответов. Существует плагин lien-oneoff, который должен упростить работу с простыми однофайловыми проектами lein, которые могут быть полезны.

Еще вы можете настроить конфигурацию загрузки, чтобы получить ответ для работы с

person Tim X    schedule 20.11.2015

какая у вас версия 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}}}
person number23_cn    schedule 20.11.2015
comment
lein repl (в проекте) nREPL server started on port 55164 on host 127.0.0.1 - nrepl://127.0.0.1:55164 REPL-y 0.3.5, nREPL 0.2.12 Clojure 1.7.0 lein -v Leiningen 2.5.1 on Java 1.8.0_45 Java HotSpot(TM) 64-Bit Server VM - person Jeff Engebretsen; 20.11.2015