From: Michal Fojtik <[email protected]>

---
 server/lib/sinatra/rack_matrix_params.rb |   16 +++++++++++++++-
 1 files changed, 15 insertions(+), 1 deletions(-)

diff --git a/server/lib/sinatra/rack_matrix_params.rb 
b/server/lib/sinatra/rack_matrix_params.rb
index a4528b0..cc038ab 100644
--- a/server/lib/sinatra/rack_matrix_params.rb
+++ b/server/lib/sinatra/rack_matrix_params.rb
@@ -66,8 +66,22 @@ module Rack
 
       # For other methods it's a way complicated ;-)
       if env['REQUEST_METHOD']!='POST' and not matrix_params.keys.empty?
+        # Workaround for WEBrick 1.3.1
+        # In WEBrick 1.3.1 variables are set incorectly like:
+        #
+        # GET /api;driver=ec2/hardware_profiles
+        # 
+        # REQUEST_PATH = 
http://localhost:3001/api;driver=mock/hardware_profiles
+        # REQUEST_URI = /
+        # PATH_INFO = /api;driver=mock/hardware_profiles
+        #
+        if env['REQUEST_PATH'] == '/'
+          env['REQUEST_URI'] = env['PATH_INFO']
+          env['REQUEST_PATH'] = env['PATH_INFO']
+        end
+
        # Rewrite current path and query string and strip all matrix params 
from it
-       env['REQUEST_PATH'], env['PATH_INFO'] = 
env['REQUEST_URI'].gsub(/;([^\/]*)/, '').gsub(/\?(.*)$/, '')
+       env['REQUEST_PATH'] = env['REQUEST_URI'].gsub(/;([^\/]*)/, 
'').gsub(/\?(.*)$/, '')
        env['PATH_INFO'] = env['REQUEST_PATH']
        env['QUERY_STRING'].gsub!(/;([^\/]*)/, '')
        new_params = matrix_params.collect do |component, params|
-- 
1.7.4.1

Reply via email to