web-dev-qa-db-fra.com

Comment mettre à niveau la version nrepl de leiningen?

J'utilise leiningen et emacs + cider pour le développement de clojure. Il y a quelques jours, après avoir mis à niveau cider via le gestionnaire de paquets emacs, je reçois le message d'avertissement suivant lorsque j'exécute M-x cider-connect ou 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> 

Le message d'avertissement indique clairement que je dois mettre à niveau nrepl vers 0.2.7, cependant, je ne sais pas comment.

J'ai installé leiningen via brew, et il utilise 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=>

Le contenu du profil leiningen est:

{:user {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]}}

Question:: Comment mettre à jour la version de nrepl utilisée par leiningen?

44
ntalbs

Je viens d'avoir ce problème, et je l'ai résolu en ajoutant une dépendance explicite sur la nouvelle version de tools.nrepl à profiles.clj. Ma ~/.lein/profiles.clj:

{:repl {:plugins [[cider/cider-nrepl "0.9.0-SNAPSHOT"]]
        :dependencies [[org.clojure/tools.nrepl "0.2.7"]]}}

Je ne sais pas si c'est la meilleure façon ou la manière officielle de le faire, quoique.

57
rntz

une note supplémentaire au-dessus de @ matthew-moss: la ligne de dépendance tools.nrepl n'est utilisée que si vous exécutez lein repl à partir d'un projet de clôture. si vous exécutez simplement lein repl à partir de votre répertoire personnel, par exemple, vous finissez par utiliser la version de tools.nrepl qui est compilée dans leiningen. Je ne sais pas pourquoi.

J'espère que cela fait gagner du temps à quelqu'un.

9
Dominic LoBue

lein a une commande de mise à niveau donc dans le cas le plus simple

lein upgrade

Si vous avez installé leiningen avec un gestionnaire de paquets, vous devrez peut-être faire quelque chose comme ci-dessous (exemple pour OS X, les distributions Linux ont leurs propres merveilleux gestionnaires de paquets):

brew unlink leiningen
brew update
brew install leiningen
7
The Unfun Cat

En plus de la réponse acceptée: l'ajout de dépendance sur 0.2.7 dans les profils utilisateur.clj a fonctionné pour moi il y a quelques jours, mais soudainement, je suis revenu à l'avertissement 0.2.6. Demander "lein deps: tree" avait cette ligne dedans:

[org.clojure/tools.nrepl "0.2.7" :scope "test" :exclusions [[org.clojure/clojure]]]

Ce qui m'a donné un indice que probablement le plugin lein-test-refresh (défini dans le même profiles.clj) crée une certaine confusion ici. En lisant un peu plus sur profiles J'ai appris l'astuce ^: replace. Cette ligne dans les dépendances fonctionne maintenant pour moi:

^:replace [org.clojure/tools.nrepl "0.2.7"]
3
peterfoldi