Class: Rundock::OperationFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/rundock/operation_factory.rb

Constant Summary collapse

OperationNotImplementedError =
Class.new(NotImplementedError)

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type) ⇒ OperationFactory

Returns a new instance of OperationFactory.



9
10
11
# File 'lib/rundock/operation_factory.rb', line 9

def initialize(type)
  @type = type
end

Class Method Details

.instance(type) ⇒ Object



5
6
7
# File 'lib/rundock/operation_factory.rb', line 5

def self.instance(type)
  self.new(type)
end

Instance Method Details

#create(instruction, attributes) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rundock/operation_factory.rb', line 13

def create(instruction, attributes)
  klass = "Rundock::Operation::#{@type.to_s.to_camel_case}"
  Logger.debug("initialize #{klass} operation")
  raise OperationNotImplementedError unless Rundock::Operation::Base.subclasses.map(&:to_s).include?(klass)

  obj = nil
  klass.split('::').map do |k|
    obj = if obj.nil?
            Kernel.const_get(k)
          else
            obj.const_get(k)
          end
  end

  operation = obj.new(instruction, attributes)
  operation
end