我如何知道我使用的是哪个 Ruby 解释器?

Are*_*epo 3 ruby rubinius jruby mri

我看过这个帖子,但我的问题可能更基本:

鉴于该线程 [1] 中接受的答案的响应是给我的,"/Users/username/.rvm/rubies/ruby-2.3.0/bin/ruby"我怎么知道那是 MRI、JRuby 等?如果是其他主要口译员,会是什么样子?


[1] 为了节省几秒钟, RbConfig.ruby

Jör*_*tag 8

现在,所有主流的 Ruby 实现都设置了RUBY_ENGINE伪常量。我脑海中浮现的各种实现的值是:

  • 鲁比纽斯: rbx
  • 红宝石: jruby
  • 松露红宝石: truffleruby
  • 蛋白石: opal
  • 红宝石: mruby
  • YARV:令人困惑, ruby
  • MRI:更令人困惑的是,还有 ruby
  • 磁悬浮: maglev
  • 铁红宝石: ironruby
  • 麦克鲁比: macruby
  • 黄玉: topaz

  • 稍微解开 MRI 与 YARV 的话题:看起来 _YARV 在 2007 年取代了 MRI_。YARV 代码库被合并到 MRI 代码库中,最终 MRI 实现被 YARV 实现取代。因此造成混乱。上下文在这里:https://archive.is/yCFB (2认同)

小智 5

基于ruby-forum 中的线程,这对我有用Ruby

irb(main):010:0> RbConfig.ruby
=> "/Users/<user>/.rbenv/versions/2.1.2/bin/ruby"
irb(main):011:0> RbConfig::CONFIG["RUBY_INSTALL_NAME"]
=> "ruby"
Run Code Online (Sandbox Code Playgroud)

并与JRuby

RbConfig.ruby
=> "/Users/<user>/.rbenv/versions/jruby-9.1.8.0/bin/jruby"
irb(main):008:0> RbConfig::CONFIG["RUBY_INSTALL_NAME"]
=> "jruby"
Run Code Online (Sandbox Code Playgroud)

根据您安装不同 ruby​​ 版本的方式,您可以使用安装路径中的差异(JRuby带有前缀)或使用RbConfig::CONFIG["RUBY_INSTALL_NAME"].

要查看所有配置键,请键入:

RbConfig::CONFIG.keys
Run Code Online (Sandbox Code Playgroud)