class Rack::Handler::Miniserver
Constants
- DEFAULT_OPTIONS
- RACK_ERRORS
- RACK_INPUT
- RACK_MULTIPROCESS
- RACK_MULTITHREAD
- RACK_RUN_ONCE
- RACK_URL_SCHEME
- RACK_VERSION
Public Class Methods
new(app)
click to toggle source
# File lib/rack/handler/miniserver.rb, line 47 def initialize(app) @app = app end
run(app, options={}) { |server| ... }
click to toggle source
# File lib/rack/handler/miniserver.rb, line 25 def run(app, options={}) options = DEFAULT_OPTIONS.merge(options) options[:host] = options.delete(:Host) options[:port] = options.delete(:Port) options[:daemonize] = false server = ::Miniserver::Server.new(app, options) yield(server) if block_given? server.start end
valid_options()
click to toggle source
# File lib/rack/handler/miniserver.rb, line 39 def valid_options { "Host=HOST" => "Hostname to listen on (default: 0.0.0.0)", "Port=PORT" => "Port to listen on (default: 8080)", } end
Public Instance Methods
process(request, response)
click to toggle source
# File lib/rack/handler/miniserver.rb, line 51 def process(request, response) env = Hash.new request.headers.each_pair do |name, value| name = "#{::Miniserver::HTTP_PREFIX}#{name.upcase.tr(::Miniserver::MINUS, ::Miniserver::UNDERLINE)}" env[name] = value end %w(CONTENT_TYPE CONTENT_LENGTH).each do |name| env[name] = env.delete("HTTP_#{name}") if env["HTTP_#{name}"] end uri = URI(request.request_url) env[::Miniserver::REQUEST_METHOD] = request.http_method env[::Miniserver::REMOTE_ADDR] = request.remote_addr env[::Miniserver::SERVER_NAME] = request.server_name env[::Miniserver::SERVER_PORT] = request.server_port env[::Miniserver::QUERY_STRING] = request.query_string env[::Miniserver::REQUEST_PATH] = uri.path env[::Miniserver::PATH_INFO] = uri.path env[::Miniserver::SCRIPT_NAME] = ::Miniserver::EMPTY_STRING env[::Miniserver::FRAGMENT] = uri.fragment || ::Miniserver::EMPTY_STRING env[RACK_ERRORS] = STDERR env[RACK_INPUT] = StringIO.new(request.body) env[RACK_VERSION] = Rack::VERSION env[RACK_MULTITHREAD] = false env[RACK_MULTIPROCESS] = false env[RACK_RUN_ONCE] = false env[RACK_URL_SCHEME] = ::Miniserver::HTTP begin response.parse(*@app.call(env)) ensure request.body.clear end end