Sha256: 04329124fcca99b6a268e123c40b091d7f5eca2b30a7aa8a31d4418edd7e9af9

Contents?: true

Size: 1.69 KB

Versions: 4

Compression:

Stored size: 1.69 KB

Contents

module Eco
  module API
    module Common
      class BaseLoader
        extend Eco::API::Common::ClassHelpers

        class << self
          attr_writer :name, :type

          # The name that this case, policy or error handler will have.
          def name(value = nil)
            name_only_once! if value
            set_created_at!
            return @name ||= self.to_s unless value
            @name = value
          end

          # Sort order
          def <=>(other)
            created_at <=> other.created_at
          end

          # If still not set, it sets the `created_at` class timestamp.
          def set_created_at!
            @created_at = Time.now unless @created_at
          end

          # Class creation timestamp, to be able to load them in the order they were declared.
          def created_at
            @created_at ||= Time.now
          end

          # Prevent the same class to be re-opened/re-named
          def name_only_once!
            raise "You have already declared #{self} or you are trying to give it a name twice" if @name
          end

        end

        # This method will be called when the BaseLoader is created
        # @note
        #   - this method should implement the loading logics for the given `Children` class.
        def initialize
          raise "You should implement this method"
        end

        def name
          self.class.name
        end

        private

        def session
          @session ||= ASSETS.session
        end

        def micro
          session.micro
        end

        def config
          @config ||= ASSETS.config
        end

      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
eco-helpers-2.0.21 lib/eco/api/common/base_loader.rb
eco-helpers-2.0.19 lib/eco/api/common/base_loader.rb
eco-helpers-2.0.18 lib/eco/api/common/base_loader.rb
eco-helpers-2.0.17 lib/eco/api/common/base_loader.rb