Как обновить версию leiningen nrepl?
Я использую leiningen
и emacs
+ cider
для разработки clojure. Несколько дней назад, после обновления cider
через диспетчер пакетов emacs, я получаю следующее предупреждающее сообщение, когда я запускаю M-x cider-connect
или M-x cider-jack-in
.
; CIDER 0.9.0snapshot (package: 20150222.137) (Java 1.8.0_31, Clojure 1.6.0, nREPL 0.2.6)
WARNING: CIDER requires nREPL 0.2.7 to work properly
user>
В предупреждающем сообщении четко сказано, что мне нужно обновить nrepl до 0.2.7, однако я не знаю, как это сделать.
Я установил leiningen
через brew
, и он использует nrepl 0.2.6
.
$ lein repl
nREPL server started on port 53218 on host 127.0.0.1 - nrepl://127.0.0.1:53218
REPL-y 0.3.5, nREPL 0.2.6
Clojure 1.6.0
Java HotSpot(TM) 64-Bit Server VM 1.8.0_31-b13
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=>
Содержимое профиля leiningen:
{:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]}}
Вопрос:: Как обновить версию nrepl, используемую leiningen?
Ответы
Ответ 1
У меня была эта проблема, и я решил ее, добавив явную зависимость от более новой версии tools.nrepl
до profiles.clj
. Мой ~/.lein/profiles.clj
:
{:repl {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]
:dependencies [[org.clojure/tools.nrepl "0.2.7"]]}}
Не знаю, лучший или официальный способ сделать это.
Ответ 2
дополнительное примечание в верхней части @matthew-moss's: строка зависимости tools.nrepl используется, только если вы запустите lein repl
из проекта clojure. если вы просто запустите lein repl
из своего домашнего каталога, например, вы в конечном итоге используете версию tools.nrepl, которая скомпилирована в leiningen. Не знаю, почему.
Надеюсь, что кто-то сохранит время.
Ответ 3
lein имеет команду обновления, поэтому в простейшем случае
lein upgrade
Если вы установили leiningen с менеджером пакетов, вам может понадобиться сделать что-то вроде ниже (пример для OS X, дистрибутивы Linux имеют свои замечательные менеджеры пакетов):
brew unlink leiningen
brew update
brew install leiningen
Ответ 4
В качестве дополнения к принятому ответу: добавив зависимость от 0.2.7 в профилях пользователей .clj работал у меня несколько дней назад, но потом я снова вернулся к предупреждению 0.2.6. В запросе "lein deps: tree" была эта строка:
[org.clojure/tools.nrepl "0.2.7" :scope "test" :exclusions [[org.clojure/clojure]]]
Что дало мне понять, что, вероятно, плагин lein-test-refresh (определенный в тех же profile.clj) вызывает некоторую путаницу здесь. Еще кое-что о profiles Я узнал о подсказке ^: replace. Эта строка в зависимостях теперь работает для меня:
^:replace [org.clojure/tools.nrepl "0.2.7"]