class Dumpling::ServiceBuilder
Public Class Methods
new(services, abstract_services)
click to toggle source
# File lib/dumpling/service_builder.rb, line 3 def initialize(services, abstract_services) @services = services @abstract_services = abstract_services end
Public Instance Methods
build(specification)
click to toggle source
# File lib/dumpling/service_builder.rb, line 8 def build(specification) instance = service_instance(specification) dependencies = service_dependencies(specification) dependencies.each do |service_id, options| service_specification = @services.get(service_id) instance.send("#{options[:attribute]}=", build(service_specification)) end instance end
Private Instance Methods
service_dependencies(specification)
click to toggle source
# File lib/dumpling/service_builder.rb, line 24 def service_dependencies(specification) dependencies = {} specification.abstract_services.each do |abstract_service_id| abstract_service_specification = @abstract_services.get(abstract_service_id) abstract_service_dependencies = service_dependencies(abstract_service_specification) dependencies.merge!(abstract_service_dependencies) end dependencies.merge!(specification.dependencies) dependencies end
service_instance(specification)
click to toggle source
# File lib/dumpling/service_builder.rb, line 20 def service_instance(specification) specification.class.nil? ? specification.instance : specification.class.new end