LoginSignup
6
4

More than 5 years have passed since last update.

Jupyter Notebook 上で rails c を動かす

Last updated at Posted at 2017-12-22

はじめに

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 タスクを追加します。

lib/tasks/jupyter.rake
namespace :jupyter do
  task :notebook do
    env = { 'RUBYLIB' => [*$LOAD_PATH, Rails.root].join(':') }
    Process.exec(env, 'jupyter', 'notebook')
  end
end

また、Gemfile にも ffi-rzmqiruby を追加します。

Gemfile
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 が選択できるようになっています。

スクリーンショット 2017-12-22 18.20.42.png

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!

スクリーンショット 2017-12-22 18.21.40.png

動いた! \\\٩( 'ω' )و////

参考

6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4