Sha256: c8671e88c674f24737c0a9a9d37f06d6112db68008b2fdbc9521f19b20f42336

Contents?: true

Size: 747 Bytes

Versions: 1

Compression:

Stored size: 747 Bytes

Contents

require "rack/alive/version"

module Rack
  class Alive

    def initialize(app, conditional_block = nil)
      @app, @path, @conditional_block = app, "/alive", conditional_block
    end

    def call(env)
      if @path == env['PATH_INFO']
        alive?(env)
      else
        @app.call(env)
      end
    end

    protected

      def alive_response(sucess)
        if sucess
          [200, {'Content-Type' => 'text/plain'}, "true"]
        else
          [500, {'Content-Type' => 'text/plain'}, "false"]
        end
      end

      def alive?(env)
        is_alive = @conditional_block.respond_to?(:call) ? @conditional_block.call(env) : true
        alive_response(is_alive)
      rescue
        alive_response(false)
      end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rack-alive-0.0.1 lib/rack/alive.rb