はじめに
Jupyter Notebook では Python 以外の言語も動かせるらしいですね。Ruby も動かせるらしいので、せっかくなら Rails アプリケーションの rails c
を Jupyter Notebook 上で実行できないか調べてみました。
バージョン情報
$ sw_vers # macOS High Sierra
ProductName: Mac OS X
ProductVersion: 10.13.1
BuildVersion: 17B1003
$ python --version
Python 3.6.4
$ ruby -v
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-darwin17]
$ bin/rails -v
Rails 5.1.4
手順
Jupyter Notebook のインストール
$ pip install jupyter
$ jupyter --version
4.4.0
iruby のインストール
Jupyter Notebook 用の Ruby カーネルである SciRuby/iruby をインストールします。なお README.md のインストール方法では ffi-rzmq
ではなく cztop
をインストールしていますが、これだと実行時にエラーになったため、代わりに ffi-rzmq
をインストールしました。
$ brew install zeromq
$ brew install czmq --HEAD
$ gem install ffi-rzmq iruby
$ iruby register --force
Rails アプリケーションでの準備
Jupyter Notebook 上で Rails コンソールを起動したい Rails アプリケーションに、次の Rake タスクを追加します。
namespace :jupyter do
task :notebook do
env = { 'RUBYLIB' => [*$LOAD_PATH, Rails.root].join(':') }
Process.exec(env, 'jupyter', 'notebook')
end
end
また、Gemfile にも ffi-rzmq
と iruby
を追加します。
group :development do
# 略
gem 'ffi-rzmq', '2.0.5'
gem 'iruby', '0.3'
end
Jupyter Notebook の起動
追加した Rake タスクを実行することで、必要な環境変数がセットアップされた状態で Jupyter Notebook が起動します。
$ bin/rails jupyter:notebook
Jupyter Notebook で Rails を読み込む
Notebook を作成してみます。iruby をインストールしたおかげで Ruby 2.4.3 が選択できるようになっています。
Notebook を作成したら、まず次のコードを実行して Rails の環境を読み込みます。
# Rails アプリケーションのルートディレクトリが ~/workspace/my_rails_app だとする。
rails_root = File.join(ENV['HOME'], 'workspace/my_rails_app')
require(File.join(rails_root, 'config/boot'))
APP_PATH = File.join(rails_root, 'config/application')
require(APP_PATH)
Rails.application.require_environment!
動いた! \\\٩( 'ω' )و////