Class: Orchestrated::Orchestrate

Inherits:
Object
  • Object
show all
Defined in:
lib/orchestrated/base.rb

Overview

because this class is called “Orchestrate”, the method defined (on Object) will be “orchestrate”

Class Method Summary collapse

Class Method Details

.belongs_to(clazz) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/orchestrated/base.rb', line 25

def belongs_to clazz
  # borrowed from Ick
  method_name = self.underscore(self.name.split('::')[-1])
  unless clazz.method_defined?(method_name)
    clazz.class_eval "
      def #{method_name}(prerequisite=Complete.new)
        raise ArgumentError.new('orchestrate does not take a block') if block_given?
        raise ArgumentError.new(%[cannot use \#{prerequisite.class.name} as a prerequisite]) unless
          prerequisite.kind_of?(CompletionExpression)
        Proxy.new(prerequisite, self)
      end"
  end
end

.underscore(camel_cased_word) ⇒ Object

snarfed from Ruby On Rails



19
20
21
22
23
24
# File 'lib/orchestrated/base.rb', line 19

def underscore(camel_cased_word)
  camel_cased_word.to_s.gsub(/::/, '/').
    gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
    tr("-", "_").
    downcase
end