我想获得带有补丁号的ruby版本。
但是RUBY_VERSION
只返回前三个数字。
所以我写的是这样的:
`ruby -v`.gsub(/ruby (\d\.\d\.\dp\d+) .*\n/, $1)
但这有点棘手。有没有更好的方法呢?
答案 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}"