我怎樣才能使用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