class Blinkist::Config::Factory

Public Class Methods

new(aspect, implementations, env=Blinkist::Config.env, app_name=Blinkist::Config.app_name) click to toggle source
# 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

Public Instance Methods

call(strategy) click to toggle source
# 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