我怎样才能使用Ruby来获得宝石的版本?我宁可不使用系统调用和grep它弹输出,如:如何在Ruby中访问gem的版本?
Gem::Version
我只是不知道如何指定:
`gem search passenger`.scan(/(?:\(|, *)([^,)]*)/).flatten.first
=> "2.2.9"
我不能只是把它不知何故我想要的宝石,就像在这种情况下,我想要得到Passenger宝石的最新版本。
我怎样才能使用Ruby来获得宝石的版本?我宁可不使用系统调用和grep它弹输出,如:如何在Ruby中访问gem的版本?
Gem::Version
我只是不知道如何指定:
`gem search passenger`.scan(/(?:\(|, *)([^,)]*)/).flatten.first
=> "2.2.9"
我不能只是把它不知何故我想要的宝石,就像在这种情况下,我想要得到Passenger宝石的最新版本。
这应该帮助你对你的方式。这会搜索远程索引以获取特定创业板的最新版本。
$ 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"]]
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
从Ruby 1.9.3开始,此方法现在已经被弃用了,并且会吐出看似无限的警告。 – Norswap 2013-01-12 23:38:57
最简单的工作原理是在一个重复问题的答案中概述: “Get version of gem within Ruby”。
Gem.loaded_specs[$NAME_OF_GEM].version
但是知道,为了这个工作,你需要有在lib
目录中至少一个文件。
与之密切相关,年龄较大但不太清晰,如果从CLI或从Ruby内部:http://stackoverflow.com/questions/1112754/determining-which-rubygem-youre-using – 2014-09-02 07:28:27