読者です 読者をやめる 読者になる 読者になる

日曜プログラミング

休日趣味でやってるプログラミング関連記事をダラダラと

cider を 0.8.1 にアップデートしてみた

Clojure cider

cider が 0.8.1 になってた のでアップデートしようとしたが割と手間取ったのでその手順をメモしておく。

今回は 0.7.0 の時と違い単なるインストール記事で使用感までは書いてない。 個人的に色々気になるのはあるけども今回は 元Changelog。 を見てもらうと言う事で。

手順概要

cider-nreplのアップデート

  • profiles.clj の [cider/cider-nrepl "0.7.0"] 記述を [cider/cider-nrepl "0.8.1"] に変更
  • コマンドラインで適当な leiningen プロジェクト下に移動して lein deps

el-getレシピの追加・変更

以下内容の queue.rcp をローカルレシピパスに追加する。

(:name queue
 :description "Queue data structure"
 :type elpa)

ローカルレシピパスの cider.rcp を以下のように変更する。

(:name cider
       :description "CIDER is a Clojure IDE and REPL."
       :type github
       :pkgname "clojure-emacs/cider"
       :checkout "14a7a7f42af5c8f4945920a03c9e2d7855976061" ; 0.8.1
       :depends (dash queue clojure-mode pkg-info))

:checkout に 0.8.1 の commit ハッシュ識別子?に相当する文字列追加。 ハッシュ識別子自体は github の releases を見ればあるのでそこから持ってきた。 :checkout を入れないと repl 起動時 cider 側が 0.8.2-SNAPSHOT だよと Warning が出る。

この辺りはel-get 公式へ既に merge されてるっぽくて、 多分こちらの環境の関係で通常手順で el-get をインストールしてないのが影響している気がするがちゃんとは調べてない。

el-get各パッケージアップデート

  • M-x el-get-install RET queue
  • M-x el-get-update RET cider
  • M-x el-get-update RET clojure-mode

repl起動確認

適当な leiningen プロジェクトの project.clj 開いて C-c M-j として repl に 0.8.1 と出てれば OK

所要時間: 2h

MELPA リポジトリを追加すれば良さそうなのは見たんだけど上手く行かなかったのでこちらは割愛。

もし、proxy 内で使ってて通常(ってあるのか知らんけど)手順で上手く行かなかった人は 参考になるかもと思い記事にした。

とりあえずはこのまま使ってみる。仮に 0.8.1 がまだまだ不安定だったとしても、今回のアップデート手順を同じようにしてダウングレードもできそうなので。

グチ

Github とかの俺の知識不足もあるんだろうけどやっぱめんどくさいよなあ。 主に今回引っかかったのは 3 つ。

clojure-mode アップデート忘れ

leiningen の感覚で依存してるのもアップデートしてくれるのかと思いきやしてくれず、 最初に cider-jackin した時何かヘンなエラー出た。そういやレシピファイルの :depends には 確かにバージョン指定なかったけどさ。

cider と nrepl-cider のバージョンミスマッチ

一つ前のを解消した後に cider-jackin すると、cider 側が 0.8.2-SNAPSHOT だよと Warning が出てた。 まあこれは解消せずとも使えそうな気はしたんだけど何となく気持ち悪かったので。

:checkout 調べるのに時間かかった。el-get-custom.el に version or checksum 的な値を 指定できるような事が書いてあったので、最初試しに "0.8.1" としてみたがダメだった。

今は Cask ってのがベター?

上二つが上手く行かずググってた時に見つけた情報。あーまた別のパッケージマネージャ的なもの? 日付的に割と最近乗り換えたというのを見て気にはなったものの今回は解決できたのでこちらを 試すのは保留した。