Module: ActiveWrapper::Gems

Defined in:
lib/active_wrapper/gems.rb

Defined Under Namespace

Classes: SimpleStruct

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configObject

Returns the value of attribute config.



9
10
11
# File 'lib/active_wrapper/gems.rb', line 9

def config
  @config
end

.gemsetObject

Returns the value of attribute gemset.



10
11
12
# File 'lib/active_wrapper/gems.rb', line 10

def gemset
  @gemset
end

.gemsetsObject (readonly)

Returns the value of attribute gemsets.



10
11
12
# File 'lib/active_wrapper/gems.rb', line 10

def gemsets
  @gemsets
end

.versionsObject (readonly)

Returns the value of attribute versions.



10
11
12
# File 'lib/active_wrapper/gems.rb', line 10

def versions
  @versions
end

Class Method Details

.activate(*gems) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/active_wrapper/gems.rb', line 30

def activate(*gems)
  begin
    require 'rubygems' unless defined?(::Gem)
  rescue LoadError
    puts "rubygems library could not be required" if @config.warn
  end
  
  self.gemset ||= gemset_from_loaded_specs
  
  gems.flatten.collect { |g| g.to_sym }.each do |name|
    version = @versions[name]
    vendor = File.expand_path("../../../vendor/#{name}/lib", __FILE__)
    warning = "#{name} #{"(#{version})" if version} failed to activate"
    if File.exists?(vendor)
      $:.unshift vendor
    elsif defined?(gem)
      begin
        gem name.to_s, version
      rescue Exception => e
        puts warning if @config.warn
      end
    else
      puts warning if @config.warn
    end
  end
end

.dependenciesObject



57
58
59
# File 'lib/active_wrapper/gems.rb', line 57

def dependencies
  dependency_filter(@gemspec.dependencies, @gemset)
end

.development_dependenciesObject



61
62
63
# File 'lib/active_wrapper/gems.rb', line 61

def development_dependencies
  dependency_filter(@gemspec.development_dependencies, @gemset)
end

.gemset_namesObject



94
95
96
97
98
99
100
101
102
# File 'lib/active_wrapper/gems.rb', line 94

def gemset_names
  (
    [ :default ] +
    @gemsets[gemspec.name.to_sym].inject([]) { |array, (key, value)|
      array.push(key) if value.is_a?(::Hash) || value.nil?
      array
    }
  ).uniq
end

.gemspec(reload = false) ⇒ Object



104
105
106
107
108
109
110
111
# File 'lib/active_wrapper/gems.rb', line 104

def gemspec(reload=false)
  if @gemspec && !reload
    @gemspec
  else
    data = YAML::load(File.read(@config.gemspec)) rescue {}
    @gemspec = SimpleStruct.new(data)
  end
end