Class: Async::App::WebServer::MetricsApp

Inherits:
Object
  • Object
show all
Includes:
Component
Defined in:
lib/async/app/web_server/metrics_app.rb

Defined Under Namespace

Classes: Serializer, Store

Constant Summary collapse

PATHS =
["/metrics", "/metrics/"].freeze

Instance Method Summary collapse

Methods included from Component

included, #run

Constructor Details

#initialize(metrics_prefix:) ⇒ MetricsApp

Returns a new instance of MetricsApp.



8
9
10
11
12
13
14
15
# File 'lib/async/app/web_server/metrics_app.rb', line 8

def initialize(metrics_prefix:)
  store = Store.new
  @serializer = Serializer.new(prefix: metrics_prefix, store:)

  bus.subscribe("metrics.updated") do |metrics|
    metrics.each { store.set(_1, **_2) }
  end
end

Instance Method Details

#callObject



18
# File 'lib/async/app/web_server/metrics_app.rb', line 18

def call(*) = [200, {}, @serializer.serialize]

#can_handle?(request) ⇒ Boolean

Returns:

  • (Boolean)


17
# File 'lib/async/app/web_server/metrics_app.rb', line 17

def can_handle?(request) = PATHS.include?(request.path)