class Webmachine::Adapters::Rack3
Constants
- DEFAULT_OPTIONS
-
Used to override default
Rack
server options (useful in testing) - NEWLINE
- RACK_VERSION
- REQUEST_URI
- VERSION_STRING
Public Instance Methods
Source
# File lib/webmachine/adapters/rack3_adapter.rb, line 37 def call(env) headers = Webmachine::Headers.from_cgi(env) rack_req = ::Rack::Request.new env request = build_webmachine_request(rack_req, headers) response = Webmachine::Response.new application.dispatcher.dispatch(request, response) response.headers[SERVER] = VERSION_STRING rack_body = case response.body when String # Strings are enumerable in ruby 1.8 [response.body] else if (io_body = IO.try_convert(response.body)) io_body elsif response.body.respond_to?(:call) response.body elsif response.body.respond_to?(:each) response.body else [response.body.to_s] end end rack_res = ::Rack::Response.new(rack_body, response.code, response.headers) rack_res.finish end
Handles a Rack-based request. @param [Hash] env the Rack
environment
Source
# File lib/webmachine/adapters/rack3_adapter.rb, line 24 def run options = DEFAULT_OPTIONS.merge({ app: self, Port: application.configuration.port, Host: application.configuration.ip }).merge(application.configuration.adapter_options) @server = ::Rack::Server.new(options) @server.start end
Start the Rack
adapter
Protected Instance Methods
Source
# File lib/webmachine/adapters/rack3_adapter.rb, line 74 def base_uri(_rack_req) nil # no-op for default, un-mapped rack adapter end
Source
# File lib/webmachine/adapters/rack3_adapter.rb, line 70 def routing_tokens(_rack_req) nil # no-op for default, un-mapped rack adapter end
Private Instance Methods
Source
# File lib/webmachine/adapters/rack3_adapter.rb, line 80 def build_webmachine_request(rack_req, headers) RackRequest.new(rack_req.request_method, rack_req.url, headers, RequestBody.new(rack_req), routing_tokens(rack_req), base_uri(rack_req), rack_req.env) end