2012-08-05 48 views
31

我知道可以通过RUBY_VERSION常量获得Ruby版本(例如“1.9.3”)。但是,我想知道如何去确定确切的版本(例如:“1.9.3-p0”)。原因是有一个错误在早期版本的Ruby 1.9.3中没有修复,这个版本在更高的版本中工作,我想要一些代码在我正在处理的一个gem中来解决这个问题。以编程方式获取完整的Ruby版本?

回答

55

还有一个RUBY_PATCHLEVEL常数。所以,你可以让你的版本字符串作为

"#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}" 
+0

完美,谢谢! – 2012-08-05 20:21:22

+6

请注意,您还应该考虑其他Ruby实现(最重要的是JRuby和Rubinius)。那些使用不同的版本和补丁级别(但是尽量保持与MRI的兼容性),并且显然具有不同的错误。一般来说,它可能比实际功能更安全,而不是潜在的误导性版本字符串。 – 2012-08-05 20:47:59

+3

@HolgerJust - 我试图用YAML适配器测试二进制字符串编码,而Psych :: YAML只有1.9版的某些版本.3(请参阅:http://bugs.ruby-lang.org/issues/5923)。通常我会测试'defined?(Encoding)',但这不是一个选项,因为这个错误会发生在一些补丁级别而不是其他的。在这里测试功能的方式的任何建议,而不是误导性的版本字符串? – 2012-08-05 22:16:55

5

至少在最新的红宝石(2.3.0),也有一个不断RUBY_DESCRIPTION

RUBY_DESCRIPTION 
# => "ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]" 
相关问题