2010-06-02 6 views

risposta

51
puts Gem.loaded_specs["activesupport"].version 
+0

impressionante, grazie! –

+3

E se hai dimenticato qual è esattamente il nome della gemma (ad esempio, libxml è denominato "libxml-ruby" ma richiesto come "xml/libxml") ricorda che Gem.loaded_specs è un hash che puoi fare: 'mette Gem.loaded_specs .keys.sort' –

22

attenzione quando si confrontano contro Gem.loaded_specs['mini_magick'].version in quanto non è un oggetto, ma un StringGem::Version!

la stringa di versione è accessibile utilizzando Gem.loaded_specs['mini_magick'].version.version che è brutto e potrebbe non funzionare come previsto, ad es. '2.2' > '2.10'!

il modo corretto per confrontare con una versione gioiello è:

Gem.loaded_specs['mini_magick'].version < Gem::Version.create('2.0')

+0

Grazie per la creazione nifty. +1 per quello. Funzionerà .to_s? Nella console di Rails, l'aggiunta di .to_s alla versione fornisce una stringa. Gem.loaded_specs ['mini_magick']. Version.to_s => '2.2'. Non so se questo sarà lo stesso all'interno della app. – Anil

+0

yes che non ha cambiato 'to_s' su un'istanza' Gem :: Version' restituisce la stessa cosa di 'versione' ... probabilmente è bene usarlo (si presume comunque che' to_s' sarà sempre implementato in questo modo) ma usare 'gem_version.version' è più esplicito (anche se nella mia risposta il' some.version.version' sembra un po 'brutto :) – kares

Problemi correlati