# IRuby [![Gem Version](https://badge.fury.io/rb/iruby.svg)](https://badge.fury.io/rb/iruby) [![Build Status](https://github.com/SciRuby/iruby/workflows/CI/badge.svg)](https://github.com/SciRuby/iruby/actions) [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/gh/RubyData/binder/master?filepath=ruby-data.ipynb) IRuby is a Ruby kernel for [Jupyter project](https://jupyter.org/). ## Installation ### Requirements - [Jupyter](https://jupyter.org) The following requirements are automatically installed. - [ffi-rzmq](https://github.com/chuckremes/ffi-rzmq) - [libzmq](https://github.com/zeromq/libzmq) The following dependencies are optional. - [Pry][Pry], if you want to use [Pry][Pry] instead of IRB for the code execution backend ### Installing Jupyter Notebook and/or JupyterLab See the official document to know how to install Jupyter Notebook and/or JupyterLab. - - ### Ubuntu #### Ubuntu 22.04+ ```shell sudo apt install libtool libffi-dev ruby ruby-dev make gem install --user-install rubygems-requirements-system gem install --user-install iruby iruby register --force ``` ### Fedora #### Fedora 40+ ```shell sudo dnf install ruby ruby-dev make zeromq-devel gem install --user-install rubygems-requirements-system gem install --user-install iruby iruby register --force ``` ### Windows [DevKit](https://rubyinstaller.org/add-ons/devkit.html) is necessary for building RubyGems with native C-based extensions. ```shell gem install iruby iruby register --force ``` ### macOS Install ruby with rbenv or rvm. Install Jupyter. #### Homebrew ```shell gem install rubygems-requirements-system gem install iruby iruby register --force ``` #### MacPorts If you are using macports, run the following commands. ```shell port install libtool autoconf automake autogen gem install rubygems-requirements-system gem install iruby iruby register --force ``` ### Docker Try [RubyData Docker Stacks](https://github.com/RubyData/docker-stacks). Running jupyter notebook: ```shell docker run --rm -it -p 8888:8888 rubydata/datascience-notebook ``` ### Installation for JRuby You can use Java classes in your IRuby notebook. - JRuby version >= 9.0.4.0 - iruby gem After installation, make sure that your `env` is set up to use jruby. ```shell env ruby -v ``` If you use RVM, it is enough to switch the current version to jruby. If you have already used IRuby with a different version, you need to generate a new kernel: ```shell iruby register --force ``` ### Install the development version of IRuby **Be careful to use the development version because it is usually unstable.** If you want to install the development version of IRuby from the source code, try [specific_install](https://github.com/rdp/specific_install). ``` gem specific_install https://github.com/SciRuby/iruby ``` ### Note for using with CZTop and CZMQ [CZTop](https://gitlab.com/paddor/cztop) adapter has been deprecated since IRuby version 0.7.4. It will be removed after several versions. If you want to use IRuby with CZTop, you need to install it and [CZMQ](https://github.com/zeromq/czmq). If both ffi-rzmq and cztop are installed, ffi-rzmq is used. If you prefer cztop, set the following environment variable. ```sh export IRUBY_SESSION_ADAPTER="cztop" ``` ## Backends There are two backends: PlainBackend and PryBackend. - PlainBackend is the default backend. It uses [IRB](https://github.com/ruby/irb). - PryBackend uses [Pry][Pry]. You can switch the backend to PryBackend by running the code below. ```ruby IRuby::Kernel.instance.switch_backend!(:pry) ``` ## Notebooks Take a look at the [example notebook](https://nbviewer.jupyter.org/urls/raw.github.com/SciRuby/sciruby-notebooks/master/getting_started.ipynb) and the [collection of notebooks](https://github.com/SciRuby/sciruby-notebooks/) which includes a Dockerfile to create a containerized installation of iruby and other scientific gems. ## Try IRuby - [Try a sample notebook on Binder](https://mybinder.org/v2/gh/RubyData/binder/master?filepath=ruby-data.ipynb) - [Launch JupyterLab on Binder](https://mybinder.org/v2/gh/RubyData/binder/master?filepath=../lab) ## Contributing Contributions to IRuby are very welcome. To former contributors In February 2021, [IRuby became the canonical repository](https://github.com/SciRuby/iruby/issues/285) and is no longer a fork from [minrk/iruby](https://github.com/minrk/iruby). Please fork from this repository again before making pull requests. ## License Copyright (c) IRuby contributors and the Ruby Science Foundation. Licensed under the [MIT](LICENSE) license. [Pry]: https://github.com/pry/pry