Sha256: 913bac189cb6b11df96fe7db89f27226e3eef5c83850118a91159337d8d9d427

Contents?: true

Size: 825 Bytes

Versions: 7

Compression:

Stored size: 825 Bytes

Contents

module Merb
  module Rack
    
    class RequestWrapper
      def initialize(env)
        @env = env
      end
      
      def params
        @env
      end
      
      def body
        @env['rack.input']
      end
    end
      
    class Adapter
      def call(env)
        env["PATH_INFO"] ||= ""
        env["SCRIPT_NAME"] ||= ""
        if env["REQUEST_URI"] =~ %r{(https?://)[^/](.*)}
          env["REQUEST_URI"] = $2
        end  
        request = RequestWrapper.new(env)
        response = StringIO.new
        begin
          controller, action = ::Merb::Dispatcher.handle(request, response)
        rescue Object => e
          return [500, {"Content-Type"=>"text/html"}, "Internal Server Error"]
        end
        
        [controller.status, controller.headers, controller.body]
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
merb-0.4.1 lib/merb/rack_adapter.rb
merb-0.5.0 lib/merb/rack_adapter.rb
merb-0.4.0 lib/merb/rack_adapter.rb
merb-0.4.2 lib/merb/rack_adapter.rb
merb-0.5.1 lib/merb/rack_adapter.rb
merb-0.5.3 lib/merb/rack_adapter.rb
merb-0.5.2 lib/merb/rack_adapter.rb