Module: Helium::Dependency::ClassMethods

Defined in:
lib/helium/dependency.rb

Instance Method Summary collapse

Instance Method Details

#dependenciesObject



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