class Desi::Configuration

Attributes

directory[R]
server[RW]

Public Instance Methods

directory=(dir) click to toggle source
# File lib/desi/configuration.rb, line 14
def directory=(dir)
  @directory = Pathname(File.expand_path(dir))
end
load_configuration!() click to toggle source
# File lib/desi/configuration.rb, line 20
def load_configuration!
  config = defaults.merge(config_files_data)

  public_methods(false).select {|m| m.to_s =~ /=$/ }.each do |setter|
    attr_name = setter.to_s.tr('=', '')

    if config.has_key?(attr_name)
      send(setter, config[attr_name])
    end
  end

  self
end

Private Instance Methods

config_file_data(filename) click to toggle source
# File lib/desi/configuration.rb, line 46
def config_file_data(filename)
  file = File.expand_path(filename)
  return {} unless File.exists?(file)

  data = YAML.load_file(file)

  if data.is_a? Hash
    data
  else
    warn "Configuration file #{filename} contains malformed data and will be ignored"
    {}
  end
end
config_files() click to toggle source
# File lib/desi/configuration.rb, line 36
def config_files
  %w[/etc/desi.yml ~/.desi.yml]
end
config_files_data() click to toggle source
# File lib/desi/configuration.rb, line 40
def config_files_data
  config_files.each_with_object({}) do |filename, hash|
    hash.merge! config_file_data(filename)
  end
end
defaults() click to toggle source
# File lib/desi/configuration.rb, line 60
def defaults
  {'directory' => "~/elasticsearch", "server" => "localhost:9200"}
end