Module: Ccp::Commands::Resolvable

Included in:
Composite::ClassMethods
Defined in:
lib/ccp/commands/resolvable.rb

Instance Method Summary collapse

Instance Method Details

#resolve(klass) ⇒ Object

Raises:



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/ccp/commands/resolvable.rb', line 4

def resolve(klass)
  klass.must.coerced(Class, Module) {
    raise CommandNotFound, "expected Class or Module, but got #{klass.class}"
  }

  if klass.ancestors.include?(Commands::Core)
    return klass # ok
  end

  if klass.must.duck?("#execute")
    # dynamically assign core
    klass.class_eval{ include Commands::Core }
    return klass
  end

  raise CommandNotFound, "#{klass} found but it misses 'execute' method"
end