class DependencyInjection::Loaders::Yaml
Public Class Methods
new(container)
click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 7 def initialize(container) @container = container end
Public Instance Methods
load(filename)
click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 11 def load(filename) file = load_file(filename) add_parameters(file['parameters']) if file['parameters'] add_services(file['services']) if file['services'] end
Private Instance Methods
add_aliased_service(name, aliased_service_name)
click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 19 def add_aliased_service(name, aliased_service_name) @container.register_alias(name, aliased_service_name) end
add_parameters(parameters)
click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 23 def add_parameters(parameters) parameters.each { |name, value| @container.add_parameter(name, value) } end
add_service(name, parameters)
click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 31 def add_service(name, parameters) if parameters['alias'] add_aliased_service(name, parameters['alias']) else add_standard_service(name, parameters) end end
add_services(services)
click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 27 def add_services(services) services.each { |name, parameters| add_service(name, parameters) } end
add_standard_service(name, parameters)
click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 39 def add_standard_service(name, parameters) lazy_load = parameters['lazy'] || false definition = @container.register(name, parameters['class'], lazy_load) definition.scope = parameters['scope'] if parameters['scope'] definition.file_path = parameters['file_path'] if parameters['file_path'] definition.add_arguments(*parameters['arguments']) if parameters['arguments'] if (configurator = parameters['configurator']) definition.add_configurator(configurator[0], configurator[1]) end if parameters['calls'] parameters['calls'].each { |method_name, arguments| definition.add_method_call(method_name, *arguments) } end end
load_file(filename)
click to toggle source
# File lib/dependency_injection/loaders/yaml.rb, line 53 def load_file(filename) YAML::load(ERB.new(IO.read(filename)).result) end