Method: Jets::Stack.new_class

Defined in:
lib/jets/stack.rb

.new_class(class_name, &block) ⇒ Object

klass = Jets::Stack.new_class(“Bucket3”)



22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/jets/stack.rb', line 22

def new_class(class_name, &block)
  # https://stackoverflow.com/questions/4113479/dynamic-class-definition-with-a-class-name
  # Defining the constant this way gets around: SyntaxError: dynamic constant assignment error
  klass = Class.new(Jets::Stack) # First klass is an anonymous class. IE: class.name is nil
  klass = Object.const_set(class_name, klass) # now klass is a named class
  Jets::Stack.subclasses << klass # mimic inherited hook because

  # Must run class_eval after adding to subclasses in order for the resource declarations in the
  # so that the resources get registered to the right subclass.
  klass.class_eval(&block)
  klass # return klass
end