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はすでにインストール済みとする
この状態ではkernelに登録されているRubyのバージョンは変わっていない。
iruby register --force # 新しいバージョンへ切り替わる
jupyter kernelspec install ~/.ipython/kernels/ruby
iruby notebook # jupyterを起動
ちなみに初めて 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として登録している。