Class: Blinkist::Config::Factory

Inherits:
Object
  • Object
show all
Defined in:
lib/blinkist/config/factory.rb

Instance Method Summary collapse

Constructor Details

#initialize(aspect, implementations, env = Blinkist::Config.env, app_name = Blinkist::Config.app_name) ⇒ Factory

Returns a new instance of Factory.



4
5
6
7
8
9
# File 'lib/blinkist/config/factory.rb', line 4

def initialize(aspect, implementations, env=Blinkist::Config.env, app_name=Blinkist::Config.app_name)
  @aspect = aspect
  @implementations = implementations
  @env = env
  @app_name = app_name
end

Instance Method Details

#call(strategy) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/blinkist/config/factory.rb', line 11

def call(strategy)
  case strategy
  when Symbol
    klass = @implementations[strategy] ||
            raise(NotImplementedError, "Unknown strategy #{strategy} for #{@aspect}")
  when Class
    klass = strategy
  else
    if strategy.respond_to?(:call)
      return strategy
    else
      raise InvalidStrategyError
    end
  end

  klass.new(@env, @app_name)
end