$shibayu36->blog;

クラスター株式会社のソフトウェアエンジニアです。エンジニアリングや読書などについて書いています。

いろいろなツールをplenvに移行した

最近はplenvを使うべきって感じだったんだけど、promptとかemacsとかを対応させるのがちょっと面倒でサボっていた。そろそろやばいと思ったので全部plenvに移行した。

インストール

macだったらbrewで提供されているので入れる。https://github.com/tokuhirom/plenv を参考に。

$ brew update
$ brew install plenv
$ brew install perl-build
$ plenv install 5.14.2 # お好みのperl入れる
$ plenv shell 5.14.2
$ plenv install-cpanm

promptに現在利用しているperlのversionを出力する

以下のように、promptにperlのversion出てるとうれしいのでそういう感じにする。
f:id:shiba_yu36:20130802002524p:plain

plenv version-nameを使うことで現在のversionの名前をとれるのでそれを使う。ついでにrbenvも出力してみる

PERL_VERSION_STRING="perl:"$(plenv version-name)
RUBY_VERSION_STRING="ruby:"$(rbenv version-name)
PROMPT='%F{blue}${PERL_VERSION_STRING} ${RUBY_VERSION_STRING}'

emacsからplenvを使う

plenv.elがあるのでそれを使う。http://karupanerura.hateblo.jp/entry/2013/03/11/090210 あたりも参考に。

まずpackage.el使ってplenv.elを入れる。

M-x package-install plenv

そのあとrequireして、defaultのperl versionを書いておく。

(require 'plenv)
(plenv-global "5.14.2")

これで適当にemacsからshell経由でperlを呼ぶと、指定したperlを使ってくれるので、例えばflymakeとかはperlって普通に書いても良い。

(defun flymake-perl-init ()
  (let* ((temp-file (flymake-init-create-temp-buffer-copy
                     'flymake-create-temp-with-folder-structure))
         (local-file (file-relative-name
                      temp-file
                      (file-name-directory buffer-file-name))))
    (list "perl" (list "-wc" local-file))))

https://github.com/karupanerura/plenv.el#use-with-flymake-perl に書いてあるように、guess-plenv-perl-pathも使えるのでそちらを使っても安心かもしれない。

まとめ

ちょっと苦労したけどとりあえずこれでplenvに移行できた。まだあんまり使ってないので、またハマったらその辺りを書こうと思う。