Module: Tap::Support::Gems

Defined in:
lib/tap/support/gems.rb,
lib/tap/support/gems/rack.rb,
lib/tap/support/gems/rake.rb
more...

Overview

Methods for working with RubyGems and other gems frequently used by Tap.

Defined Under Namespace

Modules: Rack, Rake Classes: RakeManifest

Class Method Summary collapse

Class Method Details

.gemspec(gem_name) ⇒ Object

Returns the gemspec for the specified gem. A gem version can be specified in the name, like ‘gem >= 1.2’. The gem will be activated using gem if necessary.

[View source]

14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/tap/support/gems.rb', line 14

def gemspec(gem_name)
  return gem_name if gem_name.kind_of?(Gem::Specification)
  
  # figure the version of the gem, by default >= 0.0.0
  gem_name.to_s =~ /^([^<=>]*)(.*)$/
  name, version = $1.strip, $2
  version = ">= 0.0.0" if version.empty?
  
  return nil if name.empty?
  
  # load the gem and get the spec
  gem(name, version)
  Gem.loaded_specs[name]
end

.select_gems(latest = true) ⇒ Object

Selects gem specs for which the block returns true. If latest is specified, only the latest version of each gem will be passed to the block.

[View source]

32
33
34
35
36
37
38
39
40
# File 'lib/tap/support/gems.rb', line 32

def select_gems(latest=true)
  index = latest ?
    Gem.source_index.latest_specs :
    Gem.source_index.gems.collect {|(name, spec)| spec }
  
  index.select do |spec|
    yield(spec)
  end.sort
end