如何在运行时检查Ruby中的Gem版本?
可以在ruby/rails应用程序中检查当前加载的gem的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
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
看起来有点难看:)