Sha256: 27898eadc05cbd631fe1aaf3dc92028106336b9c846b9355e131bb77c1dc2fef

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

# frozen_string_literal: true

require 'rack'

require_relative 'http_health_check/version'
require_relative 'http_health_check/config/dsl'
require_relative 'http_health_check/probe'
require_relative 'http_health_check/rack_app'
require_relative 'http_health_check/probes'

module HttpHealthCheck
  class Error < StandardError; end

  class ConfigurationError < Error; end

  def self.configure(&block)
    @rack_app = RackApp.configure(&block)
  end

  def self.rack_app
    @rack_app ||= RackApp.configure { |c| add_builtin_probes(c) }
  end

  def self.add_builtin_probes(conf)
    if defined?(::Sidekiq)
      require_relative 'http_health_check/probes/sidekiq' unless defined?(Probes::Sidekiq)
      conf.probe '/readiness/sidekiq', Probes::Sidekiq.new
    end

    if defined?(::Delayed::Job)
      require_relative 'http_health_check/probes/delayed_job' unless defined?(Probes::DelayedJob)
      conf.probe '/readiness/delayed_job', Probes::DelayedJob.new
    end

    conf
  end

  def self.run_server_async(opts)
    Thread.new { run_server(opts) }
  end

  def self.run_server(port:, host: '0.0.0.0', rack_app: nil)
    rack_app ||= ::HttpHealthCheck.rack_app
    rack_app_with_logger = ::Rack::CommonLogger.new(rack_app, rack_app.logger)

    ::Rack::Handler::WEBrick.run(rack_app_with_logger,
                                 Host: host,
                                 Port: port,
                                 AccessLog: [],
                                 Logger: rack_app.logger)
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
http_health_check-0.2.1 lib/http_health_check.rb
http_health_check-0.2.0 lib/http_health_check.rb