class Object

Anything can be a service, so we add these static methods to the Object.

Public Class Methods

as_service() click to toggle source

Called when a class declares itself as being a service

# File lib/didit/object_functions.rb, line 10
def self.as_service
        identifier = Didit::get_class_identifier(self)
        *folders, base_identifier = identifier.to_s.split("/")
        Didit::SERVICES[base_identifier.to_sym] = {
                identifier: identifier,
                class_object: self,
                class_instance: self.new
        }
end
inject(identifier) click to toggle source

Called when a service wants to have something injected

# File lib/didit/object_functions.rb, line 35
def self.inject(identifier)
        service = Didit::service_object(self)
        raise "this object doesn't declare as_service" unless service

        service[:requires] = [] unless service[:requires]
        service[:requires] << {
                type: 'one',
                id: identifier
        }
end
inject_list(base_class, args) click to toggle source

Requests a list of a specific base type to be injected

# File lib/didit/object_functions.rb, line 49
def self.inject_list(base_class, args)
        service = Didit::service_object(self)
        raise "this object doesn't declare as_service" unless service
        
        service[:requires] = [] unless service[:requires]
        service[:requires] << {
                type: 'multiple',
                id: base_class,
                var_name: args[:as]
        }
end
post_construct(method_symbol) click to toggle source

Called after all services have been loaded

# File lib/didit/object_functions.rb, line 23
def self.post_construct(method_symbol)
        service = Didit::service_object(self)
        raise "this object doesn't declare as_service" unless service
        
        service[:post_config] = [] unless service[:post_config]
        service[:post_config] << method_symbol
end