2

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

所以我这样写:

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

但这有点棘手。有没有更好的方法来做到这一点?

4

4 回答 4

5

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

RUBY_VERSION
=> "2.0.0"
RUBY_PATCHLEVEL
=> 247
于 2013-09-13T18:44:26.157 回答
3

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

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"}
于 2013-09-13T18:48:53.367 回答
1

RUBY_PATCHLEVEL您可能会感兴趣。:)

于 2013-09-13T18:43:40.427 回答
0

这应该工作"#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"

于 2013-09-13T18:44:38.930 回答