Module: Providers

Defined in:
lib/version.rb,
lib/providers.rb,
lib/providers/provider.rb

Defined Under Namespace

Classes: MissingProviderError, Provider

Constant Summary collapse

VERSION =
'0.6.1'

Class Method Summary collapse

Class Method Details

.[](*provider_keys) ⇒ Object

Providers are hard to stub in tests and should only be used when dependency injection isn't possible. TODO: Make Providers easy to stub in tests and look into feature where we get providers from another Ecosystem.



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/providers.rb', line 24

def [](*provider_keys)
  provider_keys = [*provider_keys]

  raise(MissingProviderError, 'Pass one more provider keys') if provider_keys.empty?

  if provider_keys.count == 1
    result(provider_keys.first)
  else
    provider_keys.map do |provider_key|
      result(provider_key)
    end
  end
end

.allObject



38
39
40
# File 'lib/providers.rb', line 38

def all
  providers
end

.clearObject



42
43
44
# File 'lib/providers.rb', line 42

def clear
  @providers = {}
end

.define(key, eager: false, receiver: self, &block) ⇒ Object



11
12
13
14
15
# File 'lib/providers.rb', line 11

def define(key, eager: false, receiver: self, &block)
  provider = Provider.new(key:, &block)
  provider.result if eager
  providers[key] = provider
end

.providersObject



17
18
19
20
# File 'lib/providers.rb', line 17

def providers
  @providers ||= {}
  @providers
end