web-dev-qa-db-ja.com

ライニンゲンのnreplバージョンをアップグレードする方法

Clojureの開発にleiningenemacs + ciderを使用しています。数日前、emacsパッケージマネージャーでciderをアップグレードした後、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=>

ライニンゲンプロファイルの内容は次のとおりです。

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

質問::ライニンゲンによって使用されるnreplのバージョンをアップグレードする方法?

44
ntalbs

この問題が発生したばかりで、tools.nreplの新しいバージョンへの明示的な依存関係をprofiles.cljに追加することで解決しました。私の~/.lein/profiles.clj

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

それが最善の方法なのか公式な方法なのかはわからない、tho '。

57
rntz

@ matthew-mossの上部にある追加の注意:tools.nrepl依存関係行は、clojureプロジェクト内からlein replを実行する場合にのみ使用されます。たとえば、ホームディレクトリからlein replを実行するだけの場合、leiningenにコンパイルされたバージョンのtools.nreplを使用することになります。理由はわかりません。

それが誰かの時間を節約することを願っています。

9
Dominic LoBue

leinにはupgradeコマンドがあるため、最も単純な場合

lein upgrade

パッケージマネージャーを使用してleiningenをインストールした場合は、以下のようなことを行う必要があります(OS Xの例、Linuxディストリビューションには独自の素晴らしいパッケージマネージャーがあります)。

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

受け入れられた答えへの追加として:ユーザーprofiles.cljに0.2.7の依存関係を追加すると、数日前に機能しましたが、突然0.2.6警告に戻りました。 「lein deps:tree」と尋ねると、次の行が含まれていました。

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

これはおそらく、lein-test-refreshプラグイン(同じprofiles.cljで定義されている)がここで何らかの混乱を引き起こしているという手がかりを与えてくれました。 profiles についてさらに読む:^:replaceヒントについて学びました。依存関係のこの行は今私のために動作します:

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