Sha256: 44978814efe72f94eb9e192d959406a82f9c83ecf293629bf2d839d9d61a6b76

Contents?: true

Size: 1.3 KB

Versions: 7

Compression:

Stored size: 1.3 KB

Contents

require 'active_support/configurable'
require 'active_support/concern'

require 'frenetic/configuration'

class Frenetic
  module Configurable
    extend ActiveSupport::Concern

    included do
      include ActiveSupport::Configurable
      # Don't allow the class to be configured
      class << self
        undef :configure
      end
    end

    def initialize( cfg = {} )
      config.merge! Frenetic::Configuration.new(cfg).attributes

      @builder_config = Proc.new if block_given?
    end

    def configure
      yield config
    end

  private

    def validate_configuration!
      raise( ConfigError, 'A URL must be defined' ) unless config.url
    end

    def configure_authentication( builder )
      if config.username
        builder.request :basic_auth, config.username, config.password
      end

      if config.api_token
        builder.request :token_auth, config.api_token
      end
    end

    def configure_caching( builder )
      if config.cache[:metastore]
        dependency 'rack-cache'

        builder.use FaradayMiddleware::RackCompatible, Rack::Cache::Context, config.cache
      end
    end

    def dependency( lib = nil )
      lib ? require(lib) : yield
    rescue NameError, LoadError => err
      raise ConfigError, "Missing dependency for #{self}: #{err.message}"
    end

  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
frenetic-0.0.20.alpha.6 lib/frenetic/concerns/configurable.rb
frenetic-0.0.20.alpha.5 lib/frenetic/concerns/configurable.rb
frenetic-0.0.20.alpha.4 lib/frenetic/concerns/configurable.rb
frenetic-0.0.20.alpha.3 lib/frenetic/concerns/configurable.rb
frenetic-0.0.20.alpha.2 lib/frenetic/concerns/configurable.rb
frenetic-0.0.20.alpha.1 lib/frenetic/concerns/configurable.rb
frenetic-0.0.20.alpha.0 lib/frenetic/concerns/configurable.rb