class Mebla::Configuration

Parses the configuration file and holds important configuration attributes

Attributes

host[RW]
index[RW]
log_dir[R]
logger[RW]
port[RW]

Public Class Methods

new() click to toggle source

@private Initializes a new configuration object

# File lib/mebla/configuration.rb, line 15
def initialize
  @log_dir = "#{Dir.pwd}/tmp/log"
  parse_config      
  
  # Setup defaults
  @index ||= "mebla"
  @host ||= "localhost"
  @port ||= 9200
  
  make_tmp_dir
  @logger = ActiveSupport::BufferedLogger.new(
    open("#{@log_dir}/mebla.log", "a")
  )
  @logger.level = ActiveSupport::BufferedLogger::Severity::DEBUG
  
  setup_logger        
  
  # Setup slingshot
  Slingshot::Configuration.url(self.url)
end

Public Instance Methods

setup_logger() click to toggle source

Sets up the default settings of the logger @return [nil]

# File lib/mebla/configuration.rb, line 38
def setup_logger
  @logger.auto_flushing = true      
end
url() click to toggle source

Returns the proper url for elasticsearch @return [String] url representation of the configuration options host and port

# File lib/mebla/configuration.rb, line 44
def url
  "http://#{@host}:#{@port}"
end

Private Instance Methods

make_tmp_dir() click to toggle source

Creates tmp directory if it doesn’t exist @return [nil]

# File lib/mebla/configuration.rb, line 51
def make_tmp_dir
  FileUtils.mkdir_p @log_dir
  Dir["#{@log_dir}/*"].each do |file|
    FileUtils.rm_rf file
  end
end
parse_config() click to toggle source

Loads the configuration file @return [nil]

# File lib/mebla/configuration.rb, line 60
def parse_config      
  path = "#{Rails.root}/config/mebla.yml"
  return unless File.exists?(path)
  
  conf = YAML::load(ERB.new(IO.read(path)).result)[Rails.env]
  
  conf.each do |key,value|
    self.send("#{key}=", value) if self.respond_to?("#{key}=")
  end unless conf.nil?
end