是否可以在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