class ConfigServer::App

Public Class Methods

new(config_file, logger_output = STDOUT) click to toggle source
# File lib/config_server/app.rb, line 7
def initialize(config_file, logger_output = STDOUT)
  @logger = Logger.new(logger_output)
  @logger.info "Starting config server with config:"
  @config = YAML.load_file(config_file)
  @logger.info @config
end

Public Instance Methods

call(env) click to toggle source
# File lib/config_server/app.rb, line 14
def call(env)
  request_path = env['PATH_INFO']
  @logger.info "Got request for #{request_path}"
  value = (request_path == "/ping" && "PONG") || get_key_from_yaml(request_path)
  if value
    ['200', {'Content-Type' => 'text/plain'}, [value]]
  else
    ['404', {'Content-Type' => 'text/plain'}, []]
  end
end

Private Instance Methods

get_key_from_yaml(path) click to toggle source
# File lib/config_server/app.rb, line 27
def get_key_from_yaml(path)
  keys = path.split("/").reject(&:empty?)
  val = keys.inject(@config, &:fetch)
  if val.is_a?(Hash) || val.is_a?(Array)
    val.to_json
  else
    val.to_s
  end
rescue
  nil
end