Module: Tap::Support::Gems

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

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.



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.



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