Как получить доступ к версии драгоценного камня из Ruby? - PullRequest
8 голосов
/ 13 января 2010

Как я могу получить версию гема, используя только Ruby? Я бы предпочел не использовать системный вызов и не выводить его как вывод оболочки:

`gem search passenger`.scan(/(?:\(|, *)([^,)]*)/).flatten.first
=> "2.2.9"

Разве я не могу просто получить это как-то с помощью:

Gem::Version

Я просто не знаю, как указать нужный мне драгоценный камень, так как в этом случае я хочу получить новейшую версию драгоценного камня Пассажира.

Ответы [ 4 ]

10 голосов
/ 13 января 2010

API rubygems хорошо документирован.

Пример, который вы искали:

>>> require 'rubygems'
>>> si = Gem::SourceIndex.from_installed_gems
>>> gems = si.find_name('rails')
>>> gems.each { |gem| puts gem.version.version }
2.3.5
3 голосов
/ 14 января 2010

Из " Определение используемого вами рубина ":

Gemname::VERSION::STRING

тоже работает.

2 голосов
/ 13 января 2013

Простейшая вещь, которая работает, изложена в этом ответе на двойной вопрос: " Получить версию гема в Ruby ".

Gem.loaded_specs[$NAME_OF_GEM].version

Однако знайте, что для этого вам понадобится хотя бы один файл в каталоге lib.

1 голос
/ 13 января 2010

Это должно помочь вам в вашем пути. При этом в удаленном индексе выполняется поиск последней версии определенного драгоценного камня.

$ 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"]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...