Sha256: 30ad4f56cab2a8b1bb563ce0543f165e9393fe125dbe8e4a0647eff445db7bd8
Contents?: true
Size: 845 Bytes
Versions: 2
Compression:
Stored size: 845 Bytes
Contents
# frozen_string_literal: true # TODO: add tests module Ringu module Injector extend self def create(deps) Module.new do define_method(:deps) { deps } def self.included(klass) klass.extend ClassMethods klass.send :include, InstanceMethods end end end module ClassMethods def inject(name, klass = nil) attr_accessor name injector[name] = { klass: klass } end def injector @injector ||= {} end end module InstanceMethods def initialize(**kwargs) self.class.injector.each do |name, options| term = kwargs[name] || options[:klass] resource = deps.resolve(name, term) instance_variable_set("@#{name}", resource) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
ringu-0.1.1.pre.alpha | lib/ringu/injector.rb |
ringu-0.1.0.pre.alpha | lib/ringu/injector.rb |