以编程方式获得完整的Ruby版本?

Mat*_*ins 35 ruby version

我知道可以通过RUBY_VERSION常量获取Ruby版本(例如"1.9.3").但是,我想知道如何确定确切的版本(例如:"1.9.3-p0").原因是在早期版本的Ruby 1.9.3中有一个错误没有修复,它在更高版本中运行,我想在一个gem中使用一些代码来解决这个问题.

ilt*_*mpo 58

也有一个RUBY_PATCHLEVEL常数.所以你可以得到你的版本字符串

"#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您还应该考虑其他Ruby实现(最重要的是JRuby和Rubinius).那些使用不同的版本和补丁级别(但尝试与MRI保持或多或少兼容)并且显然具有不同的错误.通常,对实际功能实施可能更安全,而不是可能误导版本字符串 (6认同)
  • @HolgerJust - 我正在尝试使用YAML适配器测试二进制字符串编码,而Psych :: YAML仅针对1.9.3的某些版本存在此错误(请参阅此处:http://bugs.ruby-lang.org/issues/5923).通常我会测试`定义?(编码)`,但这不是一个选项,因为这个错误会发生在某些补丁级别而不是其他补丁级别.有关在此处测试功能而不是误导版本字符串的方法的任何建议吗? (3认同)
  • @nc.有一个`RUBY_ENGINE`常量,由大多数ruby实现设置. (2认同)

nit*_*gen 9

至少在最新的Ruby(2.3.0)中,还有一个RUBY_DESCRIPTION常量:

RUBY_DESCRIPTION
# => "ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]"
Run Code Online (Sandbox Code Playgroud)