2010-06-02 70 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

相关问题