tags:

views:

63

answers:

3

How can I get the version of a gem using just ruby, I'd rather not use a system call and grep it the shells out put like so:

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

Can't I just get it somehow with:

Gem::Version

I just don't know how to specify the gem i want... like in this case I want to get the Passenger gems newest version.

+8  A: 

The rubygems' API is well documented.

The example you've been looking for:

>>> require 'rubygems'
>>> si = Gem::SourceIndex.from_installed_gems
>>> gems = si.find_name('rails')
>>> gems.each { |gem| puts gem.version.version }
2.3.5
Damir Zekić
+2  A: 

This should help get you on your way. This searches the remote index for the latest version of a specific 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"]]
Ryan McGeary
+1  A: 

From a related question:

Gemname::VERSION::STRING

also works.

Andrew Grimm