Help us understand the problem. What is going on with this article?

Jupyter Notebook 上で rails c を動かす

More than 1 year has passed since last update.

はじめに

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

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

参考

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away