2

以下のルビーコードが何をするのか理解できません。誰か説明してもらえますか?ありがとう!

      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 に答える