class Xapian::Rack::RelativeLoader
Public Class Methods
new(app, options = {})
click to toggle source
# File lib/xapian/rack/search.rb, line 27 def initialize(app, options = {}) @app = app @logger = options[:logger] || Logger.new($stderr) end
Public Instance Methods
call(name) { |500, {}| ... }
click to toggle source
# File lib/xapian/rack/search.rb, line 33 def call(name, &block) # Handle relative URIs if URI.parse(name).relative? env = { 'HTTP_ACCEPT' => '*/*', 'QUERY_STRING' => '', 'REQUEST_METHOD' => 'GET', 'PATH_INFO' => name, 'rack.input' => StringIO.new, } begin status, header, content = @app.call(env) rescue @logger.error "Error requesting resource #{name}: #{$!}" $!.backtrace.each{|line| @logger.error(line)} yield 500, {}, nil end body = lambda do buffer = "" content.each{|segment| buffer += segment} buffer end downcase_header = {} header.each{|k,v| downcase_header[k.downcase] = v} yield status, downcase_header, body return true end return false end