class Waistband::Configuration

Attributes

config_dir[RW]
env[R]
logger[RW]
timeout[W]

Public Class Methods

new() click to toggle source
# File lib/waistband/configuration.rb, line 15
def initialize
  @yml_config = {}
  @indexes    = {}
end

Public Instance Methods

client() click to toggle source
# File lib/waistband/configuration.rb, line 43
def client
  ::Waistband::Client.from_config(client_config_hash)
end
index(name) click to toggle source
# File lib/waistband/configuration.rb, line 32
def index(name)
  return @indexes[name] if @indexes[name]
  yml = load_yml_with_erb(File.join(config_dir, "waistband_#{name}.yml"))
  @indexes[name] = yml[@env].with_indifferent_access
end
method_missing(method_name, *args, &block) click to toggle source
Calls superclass method
# File lib/waistband/configuration.rb, line 38
def method_missing(method_name, *args, &block)
  return @yml_config[method_name] if @yml_config.has_key?(method_name)
  super
end
reset_timeout() click to toggle source
# File lib/waistband/configuration.rb, line 47
def reset_timeout
  remove_instance_variable '@timeout'
end
setup() click to toggle source
# File lib/waistband/configuration.rb, line 20
def setup
  self.config_dir = default_config_dir unless config_dir

  raise "Please define a valid `config_dir` configuration variable!"  unless config_dir
  raise "Couldn't find configuration directory #{config_dir}"         unless File.exist?(config_dir)

  @env         ||= ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development'
  yml            = load_yml_with_erb(File.join(config_dir, 'waistband.yml'))
  @yml_config    = yml[@env].with_indifferent_access
  @adapter       = @yml_config.delete('adapter')
end

Private Instance Methods

client_config_hash() click to toggle source
# File lib/waistband/configuration.rb, line 53
def client_config_hash
  {
    'servers' => servers,
    'randomize_hosts' => true,
    'retry_on_failure' => retries,
    'reload_on_failure' => reload_on_failure,
    'timeout' => timeout,
    'adapter' => @adapter
  }
end
default_config_dir() click to toggle source
# File lib/waistband/configuration.rb, line 77
def default_config_dir
  @default_config_dir ||= begin
    return nil unless defined?(Rails)
    File.join(Rails.root, 'config')
  end
end
load_yml_with_erb(file) click to toggle source
# File lib/waistband/configuration.rb, line 64
def load_yml_with_erb(file)
  if defined?(ERB)
    YAML.safe_load(ERB.new(File.read(file)).result, aliases: true, permitted_classes: [Symbol])
  else
    YAML.safe_load_file(file, aliases: true, permitted_classes: [Symbol])
  end
end
timeout() click to toggle source
# File lib/waistband/configuration.rb, line 72
def timeout
  return @timeout if defined? @timeout
  @yml_config['timeout']
end