如何使用Ruby获取gem的版本?我宁愿不使用系统调用,并将shell输出格式化为:
`gem search passenger`.scan(/(?:\(|, *)([^,)]*)/).flatten.first
=> "2.2.9"
我不能以某种方式得到它:
Gem::Version
我只是不知道如何指定我想要的宝石,就像在这种情况下我想获得Passenger宝石的最新版本。
答案 0 :(得分:10)
rubygems' API已有详细记录。
您一直在寻找的例子:
>>> require 'rubygems'
>>> si = Gem::SourceIndex.from_installed_gems
>>> gems = si.find_name('rails')
>>> gems.each { |gem| puts gem.version.version }
2.3.5
答案 1 :(得分:3)
答案 2 :(得分:2)
在这个重复问题的答案中概述了最简单的方法: “Get version of gem within Ruby”。
Gem.loaded_specs[$NAME_OF_GEM].version
然而,要知道要使其工作,您需要在lib
目录中至少有一个文件。
答案 3 :(得分:1)
这应该可以帮助您顺利前进。这会在远程索引中搜索特定gem的最新版本。
$ irb
>> require "rubygems"
>> dep = Gem::Dependency.new "passenger", Gem::Requirement.default
>> Gem::SpecFetcher.fetcher.find_matching dep
=> [[["passenger", #<Gem::Version "2.2.9">, "ruby"], "http://gems.rubyforge.org"]]