Sha256: e4ec09cc39c2bc40a0ba0d546478655451786a4b46f1f6729139fff4f5917edd

Contents?: true

Size: 1.73 KB

Versions: 4

Compression:

Stored size: 1.73 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
          ASSETS.session
        end

        def config
          session.config
        end

        def logger
          session.logger
        end

        def micro
          session.micro
        end

      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
eco-helpers-2.0.25 lib/eco/api/common/base_loader.rb
eco-helpers-2.0.24 lib/eco/api/common/base_loader.rb
eco-helpers-2.0.23 lib/eco/api/common/base_loader.rb
eco-helpers-2.0.22 lib/eco/api/common/base_loader.rb