如何在运行时检查Ruby中的Gem版本?

如何在运行时检查Ruby中的Gem版本?,ruby,rubygems,Ruby,Rubygems,可以在ruby/rails应用程序中检查当前加载的gem的gem版本吗 在调试期间,我希望能够执行以下操作: puts RubyGem.loaded_version(:active_support) 存在类似的东西吗?在与Gem.loaded_specs['mini\u magick']版本进行比较时要小心,因为它不是字符串,而是Gem::version对象 puts Gem.loaded_specs["activesupport"].version 可以使用Gem.loaded_specs

可以在ruby/rails应用程序中检查当前加载的gem的gem版本吗

在调试期间,我希望能够执行以下操作:

puts RubyGem.loaded_version(:active_support)

存在类似的东西吗?

在与
Gem.loaded_specs['mini\u magick']版本进行比较时要小心,因为它不是
字符串,而是
Gem::version
对象

puts Gem.loaded_specs["activesupport"].version
可以使用
Gem.loaded_specs['mini_magick']访问版本字符串。version.version
很难看,可能无法按预期工作,例如
'2.2'>'2.10'

与gem版本进行比较的正确方法是:


Gem.loaded_specs['mini_magick'].version

如果您忘记了Gem的确切名称(例如,libxml名为“libxml ruby”,但要求为“xml/libxml”),请记住Gem.loaded_specs是一个散列,因此您可以这样做:
放置Gem.loaded_specs.keys.sort
感谢您出色的创建+1美元。威尔,去你的工作吗?在Rails控制台中,将.to_添加到版本中会产生一个字符串。Gem.loaded_specs['mini_magick'].version.to_=>'2.2'。我不知道这在应用程序中是否相同。是的,在
Gem::Version
实例上没有将
更改为
,但返回的结果与
Version
相同。。。使用
to_s
可能没什么问题(你假设
to_s
总是以这种方式实现),但使用
gem_version.version
更明确(尽管在我的回答中
some.version.version
看起来有点难看:)