iRuby(Jupyter上で動くruby)を利用する際にRubyのバージョンを切り替える手順について

動作環境

MacOS ElCapitan
IRuby 0.2.9

手順

jupyterにkernelとして登録されているirubyはjupyterにはフルパスで登録されるので、rbenvなどでrubyを切り替えても追従しない。
jupyterに新しいバージョンのrubyを登録する必要がある。

rbenv local 2.3.1   # 新しいバージョンのrubyへの切り替え。このバージョンでirubyはすでにインストール済みとする
image
iruby register --force   # 新しいバージョンへ切り替わる
jupyter kernelspec install ~/.ipython/kernels/ruby
iruby notebook           # jupyterを起動
image

ちなみに初めて iruby notebook を起動する時に、その時点のRubyがkernelとして登録される。

何が起きているか?

irubyのソースを読んでみる。
irubyコマンドを実行した際の処理のコードは以下の場所にある。

register_kernelメソッド内でRubyのパスを書いたjsonファイルを作成し、~/.ipython/kernels/ruby/kernel.jsonに保存している。

jupyterはkernelの情報をjupyter –pathで表示されるパスから読んでいる。
2016年9月現在、jupyter 4.1.1ではkernelの情報を “~/.ipython” 以下ではなく “~/Library/Jupyter”から読む。
おそらくiruby 0.2.9は昔のjupyterの仕様を想定しているため、kernel情報を”~/.ipython”以下に書き出すのだが、最新のjupyterではそのパスは認識されない。
そのため、jupyter kernelspecコマンドで”~/.ipython”のパスをkernelとして登録している。

广告
将在 10 秒后关闭
bannerAds