Module: R10K::Module

Defined in:
lib/r10k/module.rb

Defined Under Namespace

Classes: Base, Forge, Git, Metadata, SVN

Class Method Summary collapse

Class Method Details

.new(name, basedir, args) ⇒ Object < R10K::Module] A member of the implementing subclass

Look up the implementing class and instantiate an object

This method takes the arguments for normal object generation and checks all inheriting classes to see if they implement the behavior needed to create the requested object. It selects the first class that can implement an object with ‘name, args`, and generates an object of that class.



23
24
25
26
27
28
29
30
# File 'lib/r10k/module.rb', line 23

def self.new(name, basedir, args)
  if implementation = @klasses.find { |klass| klass.implement?(name, args) }
    obj = implementation.new(name, basedir, args)
    obj
  else
    raise "Module #{name} with args #{args.inspect} doesn't have an implementation. (Are you using the right arguments?)"
  end
end

.register(klass) ⇒ Object

Register an module implementation for later generation



6
7
8
9
# File 'lib/r10k/module.rb', line 6

def self.register(klass)
  @klasses ||= []
  @klasses << klass
end