Sha256: 84925cba1029775dfbb237b5bbcfe4c4dcd20474a6f1310c0dd240b0aaf889da

Contents?: true

Size: 1.3 KB

Versions: 15

Compression:

Stored size: 1.3 KB

Contents

# Class that include Definition should implement:
#
#   template - method should use @definition to build a CloudFormation template section
#
class Jets::Stack
  module Definition
    extend ActiveSupport::Concern
    include Jets::Util::Camelize

    # Example of usage that leads here:
    #
    #   Parameter.new(self, *definition).register
    #
    # Which  is defined in parameter/dsl.rb
    #
    # Example subclass: ExampleStack < Jets::Stack
    def initialize(subclass, *definition)
      @subclass = subclass.to_s # important to use to_s, dont want the object as keys in @definitions
      @definition = definition.flatten
    end

    def register
      self.class.register(@subclass, *@definition)
    end

    class_methods do
      def register(subclass, *definition)
        @definitions ||= {}
        @definitions[subclass.to_s] ||= []
        # Create instance of the CloudFormation section class and register it.  Examples:
        #   Stack::Parameter.new(definition)
        #   Stack::Resource.new(definition)
        #   Stack::Output.new(definition)
        @definitions[subclass.to_s] << new(subclass, definition)
      end

      def definitions(subclass)
        @definitions ||= {}
        @definitions[subclass.to_s]
      end

      def all_definitions
        @definitions
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
jets-5.0.13 lib/jets/stack/definition.rb
jets-5.0.12 lib/jets/stack/definition.rb
jets-5.0.11 lib/jets/stack/definition.rb
jets-5.0.10 lib/jets/stack/definition.rb
jets-5.0.9 lib/jets/stack/definition.rb
jets-5.0.8 lib/jets/stack/definition.rb
jets-5.0.7 lib/jets/stack/definition.rb
jets-5.0.6 lib/jets/stack/definition.rb
jets-5.0.5 lib/jets/stack/definition.rb
jets-5.0.4 lib/jets/stack/definition.rb
jets-5.0.3 lib/jets/stack/definition.rb
jets-5.0.2 lib/jets/stack/definition.rb
jets-5.0.1 lib/jets/stack/definition.rb
jets-5.0.0 lib/jets/stack/definition.rb
jets-5.0.0.beta1 lib/jets/stack/definition.rb