-
-

更新履歴

-
    -
  1. - : Qiita から移植 -
  2. -
-
-
-
- NOTE -
-
-

- この記事は Qiita から移植してきたものです。元 URL: https://qiita.com/nsfisis/items/74d7ffeeebc51b20d791 -

-
-
-

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

-

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

-

- 参考: Object::RUBY_ENGINE -

-

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

-
-
$ ruby-1.9.1 -ve 'p RUBY_ENGINE'
-ruby 1.9.1p0 (2009-03-04 revision 22762) [x86_64-linux]
-"ruby"
-$ jruby -ve 'p RUBY_ENGINE'
-jruby 1.2.0 (ruby 1.8.6 patchlevel 287) (2009-03-16 rev 9419) [i386-java]
-"jruby"
-
-

- それぞれの処理系がどのような値を返すかだが、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 該当部分のソース より引用: -

-
-
- version.h -
-
/*
- * Ruby engine.
- */
-#define MRUBY_RUBY_ENGINE  "mruby"
-
-