module Deimos

Constants

VERSION

Public Instance Methods

application() click to toggle source
# File lib/deimos.rb, line 34
def application
  @application ||= Rack::Builder.new do
    Deimos.middleware.each { |m| use m }
    run Rack::URLMap.new(Deimos.applications)
  end
end
applications() click to toggle source
# File lib/deimos.rb, line 59
def applications
  load! unless loaded?

  @applications ||= {
    "/status" => Deimos::Endpoints::Status.new(status: status),
    "/metrics" => Deimos::Endpoints::Metrics.new(metrics: metrics)
  }.merge(config.applications)
end
boot!() click to toggle source
# File lib/deimos.rb, line 23
def boot!
  Thread.new do
    ::Rack::Handler::WEBrick.run(application, {
      Host: Deimos.config.bind,
      Port: Deimos.config.port,
      Logger: Deimos.logger,
      AccessLog: []
    })
  end
end
config() click to toggle source
# File lib/deimos.rb, line 41
def config
  @config ||= OpenStruct.new.tap do |x|
    x.log_level    = ENV.fetch("LOG_LEVEL", ::Logger::INFO)
    x.port         = ENV.fetch("PORT", 5000)
    x.bind         = ENV.fetch("BIND_IP", "0.0.0.0")
    x.applications = {}
    x.middleware   = []
  end
end
configure() { |config| ... } click to toggle source
# File lib/deimos.rb, line 51
def configure
  yield(config)
end
load!() click to toggle source
# File lib/deimos.rb, line 80
def load!
  require 'deimos/endpoints/status'
  require 'deimos/endpoints/metrics'
  @loaded = true
end
loaded?() click to toggle source
# File lib/deimos.rb, line 86
def loaded?
  @loaded
end
logger() click to toggle source
# File lib/deimos.rb, line 76
def logger
  @logger ||= Huyegger::Logger.new(::Logger.new(STDOUT).tap {|x| x.level = config.log_level})
end
metrics() click to toggle source
# File lib/deimos.rb, line 72
def metrics
  @metrics ||= Deimos::Metrics::Manager.new
end
middleware() click to toggle source
# File lib/deimos.rb, line 55
def middleware
  @middleware ||= [Rack::Deflater, Deimos::Logger] | config.middleware
end
status() click to toggle source
# File lib/deimos.rb, line 68
def status
  @status ||= Deimos::Status::Manager.new
end