Skip to content

Commit 7c155c2

Browse files
committed
Fix #2312
1 parent 5340641 commit 7c155c2

File tree

3 files changed

+7
-4
lines changed

3 files changed

+7
-4
lines changed

middleman-core/lib/middleman-core/rack.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
require 'rack/lint'
44
require 'rack/head'
55
require 'rack/utils'
6+
require 'webrick'
67

78
require 'middleman-core/util'
89
require 'middleman-core/logger'
@@ -86,7 +87,7 @@ def halt(response)
8687
def process_request(env, req, res)
8788
start_time = Time.now
8889

89-
request_path = URI.decode(env['PATH_INFO'].dup)
90+
request_path = WEBrick::HTTPUtils.unescape(env['PATH_INFO'].dup)
9091
if request_path.respond_to? :force_encoding
9192
request_path.force_encoding('UTF-8')
9293
end

middleman-core/lib/middleman-core/step_definitions/server_steps.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require 'middleman-core/rack'
22
require 'rspec/expectations'
33
require 'capybara/cucumber'
4+
require 'webrick'
45

56
Given /^a clean server$/ do
67
@initialize_commands = []
@@ -72,11 +73,11 @@
7273
end
7374

7475
When /^I go to "([^\"]*)"$/ do |url|
75-
visit(URI.encode(url).to_s)
76+
visit(WEBrick::HTTPUtils.escape(url))
7677
end
7778

7879
Then /^going to "([^\"]*)" should not raise an exception$/ do |url|
79-
expect{ visit(URI.encode(url).to_s) }.to_not raise_exception
80+
expect{ visit(WEBrick::HTTPUtils.escape(url)) }.to_not raise_exception
8081
end
8182

8283
Then /^the content type should be "([^\"]*)"$/ do |expected|

middleman-core/lib/middleman-core/util/paths.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
require 'addressable/uri'
55
require 'memoist'
66
require 'tilt'
7+
require 'webrick'
78

89
require 'middleman-core/contracts'
910

@@ -33,7 +34,7 @@ def tilt_class(path)
3334
Contract String => String
3435
def normalize_path(path)
3536
# The tr call works around a bug in Ruby's Unicode handling
36-
::URI.decode(path).sub(%r{^/}, '').tr('', '')
37+
WEBrick::HTTPUtils.unescape(path).sub(%r{^/}, '').tr('', '')
3738
end
3839
memoize :normalize_path
3940

0 commit comments

Comments
 (0)