--- [article] uuid = "e1456a50-4fc6-42ef-89f3-8be78e01da13" title = "【Ruby】 自身を実行している処理系の種類を判定する" description = "Ruby には複数の実装があるが、自身を実行している処理系の種類をスクリプト上からどのように判定すればよいだろうか。" tags = [ "ruby", ] [[article.revisions]] date = "2021-10-02" remark = "Qiita から移植" ---
この記事は Qiita から移植してきたものです。 元 URL: https://qiita.com/nsfisis/items/74d7ffeeebc51b20d791

Ruby という言語には複数の実装があるが、それらをスクリプト上からどのようにして programmatically に見分ければよいだろうか。

Object クラスに定義されている RUBY_ENGINE という定数がこの用途に使える。

参考: Object::RUBY_ENGINE

上記ページの例から引用する:

それぞれの処理系がどのような値を返すかだが、stack overflow に良い質問と回答があった。

What values for RUBY_ENGINE correspond to which Ruby implementations? より引用:

RUBY_ENGINE Implementation
<undefined> MRI < 1.9
`ruby' MRI >= 1.9 or REE
`jruby' JRuby
`macruby' MacRuby
`rbx' Rubinius
`maglev' MagLev
`ironruby' IronRuby
`cardinal' Cardinal

なお、この質問・回答は 2014年になされたものであり、値は変わっている可能性がある。MRI (aka CRuby) については執筆時現在 (2020/12/8) も 'ruby' が返ってくることを確認済み。

この表にない主要な処理系として、mruby'mruby' を返す。

mruby 該当部分のソース より引用: