2012-08-05 98 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]" 
相關問題