From 88ba6cfe220216f371f8756921059fac51a21262 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 23 Dec 2022 23:27:09 +0900 Subject: AsciiDoc to DocBook --- .../ruby-detect-running-implementation.xml | 95 ++++++++++++++++++++++ 1 file changed, 95 insertions(+) create mode 100644 content/posts/2021-10-02/ruby-detect-running-implementation.xml (limited to 'content/posts/2021-10-02/ruby-detect-running-implementation.xml') diff --git a/content/posts/2021-10-02/ruby-detect-running-implementation.xml b/content/posts/2021-10-02/ruby-detect-running-implementation.xml new file mode 100644 index 0000000..ccc797b --- /dev/null +++ b/content/posts/2021-10-02/ruby-detect-running-implementation.xml @@ -0,0 +1,95 @@ + +
+ + 【Ruby】 自身を実行している処理系の種類を判定する + + Ruby には複数の実装があるが、自身を実行している処理系の種類をスクリプト上からどのように判定すればよいだろうか。 + + + ruby + + + + 2021-10-02 + Qiita から移植 + + + + この記事は 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_ENGINEImplementation
<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' +が返ってくることを確認済み。 +この表にない主要な処理系として、https://mruby.org[mruby] は 'mruby' + を返す。 +mruby +該当部分のソース より引用: +/* +* Ruby engine. +*/ +#define MRUBY_RUBY_ENGINE "mruby" +
-- cgit v1.2.3-70-g09d2