module Rack::Cargo::RequestExecutor

Public Class Methods

call(_request, state) click to toggle source
# File lib/rack/cargo/request_executor.rb, line 7
def call(_request, state)
  app = state.fetch(:app)
  request_env = state.fetch(:request_env)

  status, headers, body = with_timeout(Rack::Cargo.config.timeout) do
    app.call(request_env)
  end

  body.close if body.respond_to?(:close)

  state[:app_response] = {
    status: status,
    headers: headers,
    body: body
  }
end
timeout_response() click to toggle source
# File lib/rack/cargo/request_executor.rb, line 30
def timeout_response
  [504, {}, ["{}"]]
end
with_timeout(seconds, &block) click to toggle source
# File lib/rack/cargo/request_executor.rb, line 24
def with_timeout(seconds, &block)
  Timeout.timeout(seconds, &block)
rescue Timeout::Error
  timeout_response
end