无法理解ruby代码

时间:2012-06-20 07:33:26

标签: ruby

我无法理解下面的ruby代码的作用。任何人都可以给我一些解释。谢谢!

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

The 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

使用的lib是:

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

1 个答案:

答案 0 :(得分:2)

由于您使用的是eventmachine和thin,我猜这段代码是一种简单的Web应用程序的路由代码。

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

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

而且,正如我已经说过的,这只是我的猜测,从看到你正在使用的lib列表。