Class: Wireless::Resolver

Inherits:
Object
  • Object
show all
Defined in:
lib/wireless/resolver.rb,
lib/wireless/resolver/factory.rb,
lib/wireless/resolver/singleton.rb

Overview

The registry is a key/value store (Hash) whose keys are symbols and whose values are instances of this class. Resolvers are responsible for returning their dependencies, which they do by calling their corresponding blocks. They can wrap additional behaviors around this call, e.g. singletons (Wireless::Resolver::Singleton) cache the result so that the block is only called once.

Direct Known Subclasses

Factory, Singleton

Defined Under Namespace

Classes: Factory, Singleton

Instance Method Summary collapse

Constructor Details

#initialize(block = nil) ⇒ Resolver

Returns a new instance of Resolver.



10
11
12
13
14
15
16
17
18
# File 'lib/wireless/resolver.rb', line 10

def initialize(block = nil)
  if block.respond_to?(:call)
    @block = block
  elsif block.is_a?(Class)
    @block = proc { block.new }
  else
    raise ArgumentError, "invalid argument: expected a block or a class, got: #{block.class}"
  end
end

Instance Method Details

#resolve(_fetcher) ⇒ Object

Abstract method: must be implemented in subclasses

Raises:

  • (NotImplementedError)


21
22
23
# File 'lib/wireless/resolver.rb', line 21

def resolve(_fetcher)
  raise NotImplementedError, '#resolve is an abstract method'
end