2010-06-02 43 views

回答

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

真棒,謝謝! – 2010-06-02 02:52:00

+3

如果您忘記了什麼是gem名稱(例如,libxml被命名爲「libxml-ruby」,但需要作爲「xml/libxml」),請記住Gem.loaded_specs是一個散列,因此您可以這樣做:'puts Gem.loaded_specs .keys.sort' – 2011-04-19 12:36:23

22

小心反對Gem.loaded_specs['mini_magick'].version比較時,因爲它不是一個StringGem::Version對象!

使用Gem.loaded_specs['mini_magick'].version.version可以訪問版本字符串,這是醜陋的,可能無法按預期方式工作,例如, '2.2' > '2.10'

進行比較的寶石版本正確的方法是:

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

+0

感謝您的漂亮創建。 +1。將工作?在Rails控制檯中,向版本添加.to_s會提供一個字符串。 Gem.loaded_specs ['mini_magick']。version.to_s =>'2.2'。我不知道這是否會在應用程序內相同。 – Anil 2013-07-28 12:14:35

+0

是的,沒有改變'Gem :: Version'實例上的'to_s'確實與'version'一樣返回相同的結果......這可能是很好用的(然而你假設'to_s'將總是以這種方式實現),但使用'gem_version.version'更明確(儘管在我的回答中,「some.version.version」看起來很醜陋:) – kares 2013-07-29 18:22:43

相關問題