Sha256: 953d900e9481ed35ace36c8d94e7a2d1724a35924340f8aeb14f9abd6ccd56e1

Contents?: true

Size: 927 Bytes

Versions: 22

Compression:

Stored size: 927 Bytes

Contents

require 'yaml'

module Kestrel
  module Config
    class ConfigNotLoaded < StandardError; end

    extend self

    attr_accessor :environment, :config

    def load(config_file)
      self.config = YAML.load_file(config_file)
    end

    def environment
      @environment ||= 'development'
    end

    def config
      @config or raise ConfigNotLoaded
    end

    def namespace(namespace)
      client_args_from config[namespace.to_s][environment.to_s]
    end

    def default
      client_args_from config[environment.to_s]
    end

    def new_client(space = nil)
      Client.new *(space ? namespace(space) : default)
    end

    alias method_missing namespace

    private

    def client_args_from(config)
      sanitized = config.inject({}) do |sanitized, (key, val)|
        sanitized[key.to_sym] = val; sanitized
      end
      servers = sanitized.delete(:servers)

      [servers, sanitized]
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
kestrel-client-0.7.2 lib/kestrel/config.rb
kestrel-client-0.6.5 lib/kestrel/config.rb
kestrel-client-0.6.4 lib/kestrel/config.rb
kestrel-client-0.7.1 lib/kestrel/config.rb
kestrel-client-0.7.0 lib/kestrel/config.rb
kestrel-client-0.6.1 lib/kestrel/config.rb
kestrel-client-0.6.0 lib/kestrel/config.rb
kestrel-client-0.5.8 lib/kestrel/config.rb
kestrel-client-0.5.7 lib/kestrel/config.rb
kestrel-client-0.5.3 lib/kestrel/config.rb
kestrel-client-0.5.2 lib/kestrel/config.rb
kestrel-client-0.5.1 lib/kestrel/config.rb
kestrel-client-0.5.0 lib/kestrel/config.rb
kestrel-client-0.4.1 lib/kestrel/config.rb
kestrel-client-0.4.0 lib/kestrel/config.rb
kestrel-client-0.3.1 lib/kestrel/config.rb
kestrel-client-0.3.0 lib/kestrel/config.rb
kestrel-client-0.2.4 lib/kestrel/config.rb
kestrel-client-0.2.3 lib/kestrel/config.rb
kestrel-client-0.2.2 lib/kestrel/config.rb