Lory_yang
Lory_yang

Reputation: 363

Can't understand the ruby code

I can't understand what the below ruby code does. Can anyone give me some explanation. Thanks!

      map '/healthz' do
        run Healthz.new(logger)
      end

The Healthz is:

  class Healthz
    def initialize(logger)
      @logger = logger
    end

    def call(env)
      @logger.debug "healthz access"
      healthz = Component.updated_healthz
      [200, { 'Content-Type' => 'application/json', 'Content-Length' => healthz.length.to_s }, healthz]
    rescue => e
      @logger.error "healthz error #{e.inspect} #{e.backtrace.join("\n")}"
      raise e
    end
  end

And the lib used are:

require "eventmachine"
require 'thin'
require "yajl"
require "nats/client"
require "base64"
require 'set'

Upvotes: 2

Views: 116

Answers (1)

Frost
Frost

Reputation: 11957

Since you're using eventmachine and thin, I'd guess that code is some kind of routing code for a simple web application.

That is, it maps the /healtz route of the application to the Healtz class, so that if you start up the app, and point your browser to localhost:<whatever_port_thin_uses>/healtz, it would start up a Healtz.new instance for you.

Since I don't know what Healtz actually does, I've no idea what will actually happen, but my guess is that it's some kind of rack application.

And, as I already stated, this is just my guess, from seeing the list of libs you're using.

Upvotes: 2

Related Questions