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