如何获得带有补丁号的ruby版本

时间:2013-09-13 18:40:44

标签: ruby

我想获得带有补丁号的ruby版本。 但是RUBY_VERSION只返回前三个数字。

所以我写的是这样的:

`ruby -v`.gsub(/ruby (\d\.\d\.\dp\d+) .*\n/, $1)

但这有点棘手。有没有更好的方法呢?

4 个答案:

答案 0 :(得分:5)

常量RUBY_PATCHLEVEL为您提供当前的补丁级别。

RUBY_VERSION
=> "2.0.0"
RUBY_PATCHLEVEL
=> 247

答案 1 :(得分:1)

RUBY_PATCHLEVEL可能对您有用。 :)

答案 2 :(得分:1)

以下是这些常量的source或者您也可以通过这种方式获取列表:

Object.constants.grep(/^RUBY/)
# => [:RUBY_VERSION,
#     :RUBY_RELEASE_DATE,
#     :RUBY_PLATFORM,
#     :RUBY_PATCHLEVEL,
#     :RUBY_REVISION,
#     :RUBY_DESCRIPTION,
#     :RUBY_COPYRIGHT,
#     :RUBY_ENGINE]

Object.constants.grep(/^RUBY/).each_with_object({}) {|e,h| h[e]=Object.const_get e}
# => {:RUBY_VERSION=>"2.0.0",
#     :RUBY_RELEASE_DATE=>"2013-02-24",
#     :RUBY_PLATFORM=>"i686-linux",
#     :RUBY_PATCHLEVEL=>0,
#     :RUBY_REVISION=>39474,
#     :RUBY_DESCRIPTION=>
#      "ruby 2.0.0p0 (2013-02-24 revision 39474) [i686-linux]",
#     :RUBY_COPYRIGHT=>"ruby - Copyright (C) 1993-2013 Yukihiro Matsumoto",
#     :RUBY_ENGINE=>"ruby"}

答案 3 :(得分:0)

这应该有效"#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"