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

Lan*_*ard 44 ruby rubygems

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

在调试过程中,我希望能够做到这样的事情:

puts RubyGem.loaded_version(:active_support)
Run Code Online (Sandbox Code Playgroud)

这样的事情存在吗?

sea*_*eve 69

puts Gem.loaded_specs["activesupport"].version
Run Code Online (Sandbox Code Playgroud)

  • 如果你忘记了什么是宝石名称(例如,libxml被命名为"libxml-ruby",但需要作为"xml/libxml"),请记住Gem.loaded_specs是一个散列,所以你可以这样做:`puts Gem.loaded_specs. keys.sort` (3认同)

kar*_*res 29

比较时要小心,Gem.loaded_specs['mini_magick'].version因为它不是String一个Gem::Version对象!

版本字符串是可访问使用Gem.loaded_specs['mini_magick'].version.version它是丑陋的,可能无法按预期工作,例如'2.2' > '2.10'!

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

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