module Helium::Dependency::ClassMethods
Public Instance Methods
dependencies()
click to toggle source
# File lib/helium/dependency.rb, line 42 def dependencies @dependencies ||= [] end
dependency(name, public: false, &default_block)
click to toggle source
# File lib/helium/dependency.rb, line 32 def dependency(name, public: false, &default_block) dependencies << name define_method(name) do @deps[name] ||= instance_exec(&default_block) end private(name) unless public end
new(*args, **kwargs, &block)
click to toggle source
# File lib/helium/dependency.rb, line 12 def new(*args, **kwargs, &block) instance = allocate deps = {} dependencies.each do |dep| next unless kwargs.key?(dep) deps[dep] = kwargs.delete(dep) end instance.instance_variable_set(:@deps, deps) if kwargs.any? instance.send :initialize, *args, **kwargs, &block else instance.send :initialize, *args, &block end instance end