Module: Helium::Dependency::ClassMethods
- Defined in:
- lib/helium/dependency.rb
Instance Method Summary collapse
- #dependencies ⇒ Object
- #dependency(name, public: false, &default_block) ⇒ Object
- #new(*args, **kwargs, &block) ⇒ Object
Instance Method Details
#dependencies ⇒ Object
42 43 44 |
# File 'lib/helium/dependency.rb', line 42 def dependencies @dependencies ||= [] end |
#dependency(name, public: false, &default_block) ⇒ Object
32 33 34 35 36 37 38 39 40 |
# 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) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# 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 |