2

我不明白下面的 ruby​​ 代码是做什么的。谁能给我一些解释。谢谢!

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

Healthz 是:

  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

使用的库是:

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

1 回答 1

2

由于您使用的是 eventmachine 和 Thin,我猜该代码是用于简单 Web 应用程序的某种路由代码。

也就是说,它将/healtz应用程序的路由映射到Healtz类,因此如果您启动应用程序并将浏览器指向localhost:<whatever_port_thin_uses>/healtz,它将Healtz.new为您启动一个实例。

因为我不知道Healtz实际做了什么,所以我不知道实际会发生什么,但我的猜测是它是某种机架应用程序。

而且,正如我已经说过的,这只是我的猜测,来自查看您正在使用的库列表。

于 2012-06-20T07:43:37.887 回答