2012-08-05 13 views
31

Sé que es posible obtener la versión de Ruby (por ejemplo, "1.9.3") a través de la constante RUBY_VERSION. Sin embargo, quiero saber cómo determinar la versión exacta (por ejemplo, "1.9.3-p0"). La razón es que hay un error que no se solucionó en versiones anteriores de Ruby 1.9.3 que está funcionando en versiones posteriores, y quiero un código en una joya en la que estoy trabajando para dar cuenta de esto.Obteniendo la versión COMPLETA de Ruby por programación?

Respuesta

55

Hay una constante RUBY_PATCHLEVEL también. Para que pueda obtener su cadena de versión como

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

Perfecto, gracias! –

+6

Tenga en cuenta que también debe tener implementaciones alternativas de Ruby en mente (lo más importante es JRuby y Rubinius). Aquellos que usan diferentes versiones y niveles de parche (pero intentan mantenerse más o menos compatibles con MRI) y obviamente tienen diferentes errores. Generalmente, es probablemente mucho más seguro implementarlo contra capacidades reales en lugar de cadenas de versiones potencialmente engañosas –

+3

@HolgerJust - Estoy intentando probar la codificación de cadenas binarias con un adaptador YAML, y Psych :: YAML tenía este error solo para algunas versiones de 1.9 .3 (ver aquí: http://bugs.ruby-lang.org/issues/5923). Normalmente solo probaría 'defined? (Encoding)', pero esa no es una opción ya que este error ocurriría en algunos niveles de parche y no en otros. ¿Alguna sugerencia sobre una forma de probar las capacidades aquí en lugar de cadenas de versiones engañosas? –

5

Al menos en el más reciente Ruby (2.3.0), también hay una constante RUBY_DESCRIPTION:

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