Class: RailsHealthChecks::Checks::HttpCheck

Inherits:
RailsHealthChecks::Check show all
Defined in:
lib/rails_health_checks/checks/http_check.rb

Instance Attribute Summary

Attributes inherited from RailsHealthChecks::Check

#latency_ms, #message, #status, #timeout

Instance Method Summary collapse

Constructor Details

#initialize(url:, expected_status: 200, headers: {}) ⇒ HttpCheck

Returns a new instance of HttpCheck.



9
10
11
12
13
# File 'lib/rails_health_checks/checks/http_check.rb', line 9

def initialize(url:, expected_status: 200, headers: {})
  @url = url
  @expected_status = expected_status
  @headers = headers
end

Instance Method Details

#callObject



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/rails_health_checks/checks/http_check.rb', line 15

def call
  measure do
    uri = URI.parse(@url)
    request = Net::HTTP::Get.new(uri)
    @headers.each { |name, value| request[name] = value }
    response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") { |http| http.request(request) }
    code = response.code.to_i
    return fail_with("HTTP GET #{@url} returned #{code}, expected #{@expected_status}") if code != @expected_status
  end
  pass
rescue StandardError => e
  fail_with(e.message)
end