Class: RailsHealthChecks::ResponseBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_health_checks/response_builder.rb

Instance Method Summary collapse

Constructor Details

#initialize(results) ⇒ ResponseBuilder

Returns a new instance of ResponseBuilder.



5
6
7
# File 'lib/rails_health_checks/response_builder.rb', line 5

def initialize(results)
  @results = results
end

Instance Method Details

#http_statusObject



31
32
33
# File 'lib/rails_health_checks/response_builder.rb', line 31

def http_status
  overall_status == "ok" ? :ok : :service_unavailable
end

#overall_statusObject



9
10
11
12
13
14
15
16
17
18
# File 'lib/rails_health_checks/response_builder.rb', line 9

def overall_status
  statuses = @results.values.map(&:status)
  if statuses.include?("critical")
    "critical"
  elsif statuses.include?("degraded")
    "degraded"
  else
    "ok"
  end
end

#to_jsonObject



20
21
22
23
24
25
26
27
28
29
# File 'lib/rails_health_checks/response_builder.rb', line 20

def to_json(*)
  checks_hash = @results.transform_values do |check|
    result = { status: check.status }
    result[:latency_ms] = check.latency_ms if check.latency_ms
    result[:message] = check.message if check.message
    result
  end

  { status: overall_status, timestamp: Time.now.utc.iso8601, checks: checks_hash }.to_json
end