Class: YARD::Server::RackAdapter

Inherits:
Adapter
  • Object
show all
Includes:
WEBrick::HTTPUtils
Defined in:
lib/yard/server/rack_adapter.rb

Overview

A server adapter to respond to requests using the Rack server infrastructure.

Since:

  • 0.6.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

This class inherits a constructor from YARD::Server::Adapter

Instance Attribute Details

#document_rootString Originally defined in class Adapter

Returns the location where static files are located, if any. To set this field on initialization, pass :DocumentRoot to the server_opts argument in #initialize

Returns:

  • (String)

    the location where static files are located, if any. To set this field on initialization, pass :DocumentRoot to the server_opts argument in #initialize

Since:

  • 0.6.0

#librariesHash{String=>Array<LibraryVersion>} Originally defined in class Adapter

Returns a map of libraries.

#optionsHash Originally defined in class Adapter

Returns options passed and processed by adapters. The actual options mostly depend on the adapters themselves.

Returns:

  • (Hash)

    options passed and processed by adapters. The actual options mostly depend on the adapters themselves.

Since:

  • 0.6.0

#routerRouter Originally defined in class Adapter

Returns the router object used to route URLs to commands

Returns:

  • (Router)

    the router object used to route URLs to commands

Since:

  • 0.6.0

#server_optionsHash Originally defined in class Adapter

Returns a set of options to pass to the server backend. Note that :DocumentRoot also sets the #document_root.

Returns:

  • (Hash)

    a set of options to pass to the server backend. Note that :DocumentRoot also sets the #document_root.

Since:

  • 0.6.0

Instance Method Details

#call(env) ⇒ Array(Numeric,Hash,Array)

Responds to Rack requests and builds a response with the YARD::Server::Router.

Returns:

Since:

  • 0.6.0



48
49
50
51
52
53
54
55
56
# File 'lib/yard/server/rack_adapter.rb', line 48

def call(env)
  request = Rack::Request.new(env)
  request.path_info = unescape(request.path_info) # unescape things like %3F
  router.call(request)
rescue StandardError => ex
  log.backtrace(ex)
  [500, {'Content-Type' => 'text/plain'},
    [ex.message + "\n" + ex.backtrace.join("\n")]]
end

#startvoid

This method returns an undefined value.

Starts the Rack::Server. This method will pass control to the server and block.

Since:

  • 0.6.0



61
62
63
64
65
66
# File 'lib/yard/server/rack_adapter.rb', line 61

def start
  server = Rack::Server.new(server_options)
  server.instance_variable_set("@app", self)
  print_start_message(server)
  server.start
end