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