diff --git a/lib/sinatra.rb b/lib/sinatra.rb index 97a8a9f3..91416589 100644 --- a/lib/sinatra.rb +++ b/lib/sinatra.rb @@ -149,7 +149,7 @@ module Sinatra @param_keys = [] @options = options regex = @path.to_s.gsub(PARAM) do - @param_keys << $1.intern + @param_keys << $1 "(#{URI_CHAR}+)" end @@ -586,9 +586,9 @@ module Sinatra end def params - @params ||= @route_params.merge(@request.params).symbolize_keys + @params = @route_params.merge(@request.params) end - + def stop(*args) throw :halt, args end diff --git a/test/app_test.rb b/test/app_test.rb index 972e7c40..c272a34c 100644 --- a/test/app_test.rb +++ b/test/app_test.rb @@ -18,7 +18,7 @@ context "Sinatra" do specify "handles events" do get '/:name' do - 'Hello ' + params[:name] + 'Hello ' + params["name"] end get_it '/Blake' diff --git a/test/application_test.rb b/test/application_test.rb index 98bfc331..c0ff3a07 100644 --- a/test/application_test.rb +++ b/test/application_test.rb @@ -42,7 +42,7 @@ context "Looking up a request" do result.should.not.be.nil result.block.should.be block - result.params.should.equal :foo => 'bar' + result.params.should.equal "foo" => 'bar' end end @@ -120,7 +120,7 @@ context "Events in an app" do specify "get access to request, response, and params" do get '/:foo' do - params[:foo] + params[:bar] + params["foo"] + params["bar"] end get_it '/foo?bar=baz' diff --git a/test/events_test.rb b/test/events_test.rb index 781b46db..1ae211e6 100644 --- a/test/events_test.rb +++ b/test/events_test.rb @@ -28,12 +28,12 @@ context "Simple Events" do specify "takes params in path" do result = invoke_simple('/:foo/:bar', '/a/b') result.should.not.be.nil - result.params.should.equal :foo => 'a', :bar => 'b' + result.params.should.equal "foo" => 'a', "bar" => 'b' # unscapes result = invoke_simple('/:foo/:bar', '/a/blake%20mizerany') result.should.not.be.nil - result.params.should.equal :foo => 'a', :bar => 'blake mizerany' + result.params.should.equal "foo" => 'a', "bar" => 'blake mizerany' end specify "ignores to many /'s" do