当前位置: 首页 > 工具软件 > Ruby > 使用案例 >

linux中查看ruby版本号,Ruby 版本常量

蓟俊杰
2023-12-01

说明

在 MRI 1.9 以上的版本中,有一些Object类中定义的常量,说明了 Ruby 的版本和平台等信息。

常量

含义

RUBY_DESCRIPTION

和命令行输入ruby -v prints是一样的效果,由表中下列常量组成

RUBY_ENGINE

使用的解释器引擎

RUBY_VERSION

运行的版本号

RUBY_PATCHLEVEL

补丁版本号, 1.8 也有这个常量

RUBY_RELEASE_DATE

发布日期,1.8 也有这个常量

RUBY_REVISION

SVN 版本号

RUBY_PLATFORM

OS 平台, 1.8 也有这个常量

使用 RVM 查看 MRI1.8 以上的各个版本对这些常量的兼容性:

rvm all doruby -e 'puts "#{RUBY_ENGINE} #{RUBY_VERSION}p#{RUBY_PATCHLEVEL} (#{RUBY_RELEASE_DATE} revision #{RUBY_REVISION}) [#{RUBY_PLATFORM}]"'

解释下上面的命令:

rvm all do ...是依次切换到已经安装 ruby 各个版本的环境下运行相关命令;

ruby -e '...' 是使用 ruby 解析器运行一条...的 ruby 语句;

puts "..."是在终端的标准输出中打印 Ruby 版本常量。

结果为:

ruby 1.9.1p431 (2011-02-18 revision 30908) [x86_64-linux]

ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]

ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]

ruby 1.9.3p551 (2014-11-13 revision 48407) [x86_64-linux]

ruby 2.1.5p273 (2014-11-13 revision 48405) [x86_64-linux]

ruby 2.0.0p643 (2015-02-25 revision 49749) [x86_64-linux]

ruby 1.9.2p330 (2014-08-07 revision 47094) [x86_64-linux]

因为 rvm 安装的 ruby 和平台不同,结果也可能不一样。

例子

通过这些常量,可以:

1. 不同的平台加载不同的代码或者 GEM 包,兼容各个平台;

如 select IO 的eventmachine:

# 省略代码...

elsif RUBY_PLATFORM =~ /java/

require 'java'

require 'jeventmachine'

else

# 省略代码...

require 'rubyeventmachine'

# 省略代码...

end

根据不同的平台加载不同的事件驱动引擎,使用 Java JVM 平台会加载 JRUBY 的,否则加载 ruby 的.

2. 不同的版本,打一些猴子补丁或者补丁代码,以兼容各个版本;

如用于心跳检测的god:

# 省略代码...

if RUBY_VERSION < '1.9'

$KCODE = 'u'

end

# 省略代码...

在 ruby 1.8 的版本中,不是在文件头部加入# coding: utf-8, 而是使用全局变量 $KCODE 来判断 ruby 文件编码的

3. 检测平台或者版本,只有符合条件才运行程序;

if RUBY_VERSION < '2.2.2' && RUBY_ENGINE == 'ruby'

# 省略代码...

abort # 省略代码...

end

正在开发的代码仅仅支持 ruby 2.2.2 以上的版本,如果使用小于这个版本的 ruby 解析器,会打印一串提示信息后,退出程序。

BTW:

对于一些人,然并卵。

一般情况下,了解这些就够用了。

如果高手觉得不够用(这不在本文的范围内),想获取更详细的信息,可以调用下面的 ruby 代码。

puts RbConfig::CONFIG

没有文档,具体用法请查看 ruby ext/extmk.rb 源文件。

 类似资料: