Class: GemLoader::Gem

Inherits:
Object
  • Object
show all
Defined in:
lib/gem_loader/gem.rb,
lib/gem_loader/gem/dsl.rb

Defined Under Namespace

Classes: Dsl

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, gem_requirement, *args) ⇒ Gem

Returns a new instance of Gem.



7
8
9
10
11
12
13
# File 'lib/gem_loader/gem.rb', line 7

def initialize(name, gem_requirement, *args)
  self.name = name.to_s
  self.gem_requirement = gem_requirement
  self.options = {}

  self.parse_args(*args)
end

Instance Attribute Details

#gem_requirement ⇒ Object

Returns the value of attribute gem_requirement.



5
6
7
# File 'lib/gem_loader/gem.rb', line 5

def gem_requirement
  @gem_requirement
end

#name ⇒ Object

Returns the value of attribute name.



5
6
7
# File 'lib/gem_loader/gem.rb', line 5

def name
  @name
end

#options ⇒ Object

Returns the value of attribute options.



5
6
7
# File 'lib/gem_loader/gem.rb', line 5

def options
  @options
end

#version_requirement ⇒ Object

Returns the value of attribute version_requirement.



5
6
7
# File 'lib/gem_loader/gem.rb', line 5

def version_requirement
  @version_requirement
end

Instance Method Details

#dsl(&block) ⇒ Object



4
5
6
# File 'lib/gem_loader/gem/dsl.rb', line 4

def dsl(&block)
  Dsl.new(self, &block)
end

#gem_args ⇒ Object



26
27
28
# File 'lib/gem_loader/gem.rb', line 26

def gem_args
  [self.name, self.version_requirements ].compact.flatten
end

#load ⇒ Object



30
31
32
# File 'lib/gem_loader/gem.rb', line 30

def load
  Kernel.send :gem, *gem_args
end

#parse_args(*args) ⇒ Object



15
16
17
18
19
20
# File 'lib/gem_loader/gem.rb', line 15

def parse_args(*args)
  self.options = args.pop if args.last.is_a?(Hash)
  self.version_requirement = args.first
  self.gem_requirement.add_version_requirement(version_requirement)
  self
end

#require ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/gem_loader/gem.rb', line 34

def require
  if self.options.include?(:require)
    [ self.options[:require] ].flatten.compact.each do |lib|
      Kernel.send :require, lib.to_s
    end
  else
    Kernel.send :require, self.name
  end
end

#version_requirements ⇒ Object



22
23
24
# File 'lib/gem_loader/gem.rb', line 22

def version_requirements
  self.gem_requirement.version_requirements
end