#13: 『パーフェクト Ruby』購入、Ruby をインストール

『パーフェクト Ruby』改訂 2 版を購入しました。パーフェクトシリーズを手に取るのは久しぶりです。Python も最近新しい版が出たみたいですね。

今日やったこと(Done)

元から入っている ruby のバージョンを確認してみます。

$ which ruby
/usr/bin/ruby

$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin17]

ruby のバージョンを切り替えるツール rbenv をインストールします。

$ brew info rbenv
rbenv: stable 1.1.2 (bottled), HEAD

$ brew install rbenv

Note that this also installs ruby-build, so you'll be ready to install other Ruby versions out of the box.

brew install rbenv ruby-build としている記事を見かけましたが ruby-build は手動で指定する必要はないようです。

$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.config/fish/config.fish:

status --is-interactive; and source (rbenv init -|psub)

shell の設定ファイル config.fish に上記コマンドを追加します。

shell を再起動して変更を反映させてからチェックスクリプトを実行してみます。

$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20200727)
Counting installed Ruby versions: none
  There aren't any Ruby versions installed under `/Users/ryocalm/.rbenv/versions'.
  You can install Ruby versions like so: rbenv install 2.2.4
Checking RubyGems settings: OK
Auditing installed plugins: OK

特に問題はなかったようで安心しました。

コマンド rbenv install -l でインストール可能な処理系のリストを確認できます。

2.5.8
2.6.6
2.7.1
jruby-9.2.12.0
maglev-1.0.0
mruby-2.1.1
rbx-5.0
truffleruby-20.1.0
truffleruby+graalvm-20.1.0

Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all' to show all local versions.

いろいろな処理系があるみたいですね。ひとまず 2.7.1 をインストールします。

$ rbenv install 2.7.1

openssl のインストールに時間がかかっているようなので続きはまた明日。

わかったこと(Fact)

  • rbenvruby のバージョンを切り替えることだけを担当し、各バージョンの ruby をインストールしたり、バージョンごとに環境変数を切り替えたりするのは(rbenv ではなく)プラグインが担当する。
  • 各バージョンをインストールするのは ruby-build というプラグイン
  • ruby-buildrbenv をインストールする際に合わせてインストールされるので手動で指定する必要はない。
  • JRuby とは Java VM 上で動作する Ruby の処理系。
  • MagLev とは GemStone という会社が開発している Ruby の処理系。Smalltalk VM をベースにしているらしい。
  • mruby とは組み込みシステム向けの Ruby の処理系。Matz が開発リーダーを務めているらしい。
  • rbx はよくわからなかった。
  • truffleruby とは Oracle が開発している Ruby の処理系。high performance らしい。
  • GraalVM とは Oracle が開発している多言語対応ランタイム?様々な言語に対応していてネイティブバイナリを出力できるので、enables interoperability ということらしい。
    • 理解が不十分なので参考程度に。

GraalVM is a high-performance runtime that provides significant improvements in application performance and efficiency which is ideal for microservices. It is designed for applications written in Java, JavaScript, LLVM-based languages such as C and C++, and other dynamic languages.

参考文献(References)

rbenv

シンボリックリンク

その他

そのうちやること(Someday)