Sha256: 5f74f9d0ef671497ef5d8a5fbb37732e45b5b9ccccb3e5ff510650df846804a3

Contents?: true

Size: 718 Bytes

Versions: 20

Compression:

Stored size: 718 Bytes

Contents

module Rundock
  class HookFactory
    HookNotImplementedError = Class.new(NotImplementedError)

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

    def initialize(type)
      @type = type
    end

    def create(name, attributes)
      klass = "Rundock::Hook::#{@type.to_s.to_camel_case}"
      Logger.debug("initialize #{klass} hook")
      raise HookNotImplementedError unless Rundock::Hook::Base.subclasses.map(&:to_s).include?(klass)

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

      hook = obj.new(name, attributes)
      hook
    end
  end
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
rundock-1.2.1 lib/rundock/hook_factory.rb
rundock-1.2.0 lib/rundock/hook_factory.rb
rundock-1.1.7 lib/rundock/hook_factory.rb
rundock-1.1.6 lib/rundock/hook_factory.rb
rundock-1.1.5 lib/rundock/hook_factory.rb
rundock-1.1.4 lib/rundock/hook_factory.rb
rundock-1.1.3 lib/rundock/hook_factory.rb
rundock-1.1.2 lib/rundock/hook_factory.rb
rundock-1.1.1 lib/rundock/hook_factory.rb
rundock-1.1.0 lib/rundock/hook_factory.rb
rundock-1.0.8 lib/rundock/hook_factory.rb
rundock-1.0.7 lib/rundock/hook_factory.rb
rundock-1.0.6 lib/rundock/hook_factory.rb
rundock-1.0.5 lib/rundock/hook_factory.rb
rundock-1.0.4 lib/rundock/hook_factory.rb
rundock-1.0.2 lib/rundock/hook_factory.rb
rundock-1.0.1 lib/rundock/hook_factory.rb
rundock-1.0.0 lib/rundock/hook_factory.rb
rundock-0.5.8 lib/rundock/hook_factory.rb
rundock-0.5.7 lib/rundock/hook_factory.rb