Class: QTimetrap::Container

Inherits:
Object
  • Object
show all
Defined in:
lib/qtimetrap/container.rb

Overview

Tiny DI container that registers app services and memoized singletons.

Instance Method Summary collapse

Constructor Details

#initialize(config:) ⇒ Container

Returns a new instance of Container.



6
7
8
9
10
11
# File 'lib/qtimetrap/container.rb', line 6

def initialize(config:)
  @config = config
  @providers = {}
  @memoized = {}
  register_defaults
end

Instance Method Details

#fetch(key) ⇒ Object



17
18
19
20
21
22
23
# File 'lib/qtimetrap/container.rb', line 17

def fetch(key)
  name = key.to_sym
  return memoized[name] if memoized.key?(name)

  provider = providers.fetch(name)
  memoized[name] = provider.call
end

#register(key, &provider) ⇒ Object



13
14
15
# File 'lib/qtimetrap/container.rb', line 13

def register(key, &provider)
  providers[key.to_sym] = provider
end