2012-08-05 18 views
31

Ich weiß, dass es möglich ist, die Ruby-Version (z. B. "1.9.3") über die Konstante RUBY_VERSION zu erhalten. Ich möchte jedoch wissen, wie man die genaue Version ermittelt (z. B. "1.9.3-p0"). Der Grund ist, dass ein Fehler in früheren Versionen von Ruby 1.9.3, der in späteren Versionen funktioniert, nicht behoben wurde, und ich möchte, dass ein Code in einem Edelstein, an dem ich gerade arbeite, dies berücksichtigt.Programmatisch vollständige Ruby-Version erhalten?

Antwort

55

Es gibt auch eine RUBY_PATCHLEVEL Konstante. So können Sie Ihre Version Zeichenfolge als

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

Perfect, danke! –

+6

Beachten Sie, dass Sie auch alternative Ruby-Implementierungen berücksichtigen sollten (vor allem JRuby und Rubinius). Diese benutzen verschiedene Versionen und Patch-Level (aber versuchen, dort mehr oder weniger kompatibel mit MRI zu bleiben) und haben offensichtlich verschiedene Fehler. Im Allgemeinen ist es wahrscheinlich viel sicherer, gegen tatsächliche Fähigkeiten zu implementieren als potenziell irreführende Versionszeichenfolgen. –

+3

@HolgerJust - Ich versuche, Binär-String-Codierung mit einem YAML-Adapter zu testen, und Psych :: YAML hatte diesen Fehler nur für einige Versionen von 1.9 .3 (siehe hier: http://bugs.ruby-lang.org/issues/5923). Normalerweise würde ich nur 'defined? (Encoding)' testen, aber das ist keine Option, da dieser Fehler in einigen Patchlevels auftreten würde und nicht in anderen. Irgendwelche Vorschläge für eine Möglichkeit, die Funktionen hier zu testen, anstatt die Versionszeichenfolgen zu missbrauchen? –

5

zumindest in der neuesten Ruby-get (2.3.0), gibt es auch eine RUBY_DESCRIPTION Konstante:

RUBY_DESCRIPTION 
# => "ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]" 
Verwandte Themen