是否可以在ruby/rails應用程序中檢查當前加載的gem的gem版本?如何在運行時檢查Ruby中的Gem版本?
在調試過程中,我希望能夠做這樣的事情:
puts RubyGem.loaded_version(:active_support)
類的東西存在嗎?
是否可以在ruby/rails應用程序中檢查當前加載的gem的gem版本?如何在運行時檢查Ruby中的Gem版本?
在調試過程中,我希望能夠做這樣的事情:
puts RubyGem.loaded_version(:active_support)
類的東西存在嗎?
puts Gem.loaded_specs["activesupport"].version
小心反對Gem.loaded_specs['mini_magick'].version
比較時,因爲它不是一個String
但Gem::Version
對象!
使用Gem.loaded_specs['mini_magick'].version.version
可以訪問版本字符串,這是醜陋的,可能無法按預期方式工作,例如, '2.2' > '2.10'
!
進行比較的寶石版本正確的方法是:
Gem.loaded_specs['mini_magick'].version < Gem::Version.create('2.0')
感謝您的漂亮創建。 +1。將工作?在Rails控制檯中,向版本添加.to_s會提供一個字符串。 Gem.loaded_specs ['mini_magick']。version.to_s =>'2.2'。我不知道這是否會在應用程序內相同。 – Anil 2013-07-28 12:14:35
是的,沒有改變'Gem :: Version'實例上的'to_s'確實與'version'一樣返回相同的結果......這可能是很好用的(然而你假設'to_s'將總是以這種方式實現),但使用'gem_version.version'更明確(儘管在我的回答中,「some.version.version」看起來很醜陋:) – kares 2013-07-29 18:22:43
真棒,謝謝! – 2010-06-02 02:52:00
如果您忘記了什麼是gem名稱(例如,libxml被命名爲「libxml-ruby」,但需要作爲「xml/libxml」),請記住Gem.loaded_specs是一個散列,因此您可以這樣做:'puts Gem.loaded_specs .keys.sort' – 2011-04-19 12:36:23