OK, I did a little more investigation. It looks like this was
intended. Here is a snippet of actionpack/test/controller/
# No + to space in URI escaping, only for query params.
results = rs.recognize_path "/file/hello+world/how+are+you%3F"
assert results, "Recognition should have succeeded"
assert_equal ['hello+world', 'how+are+you?'], results[:path]
# Use %20 for space instead.
results = rs.recognize_path "/file/hello%20world/how%20are%20you
assert results, “Recognition should have succeeded”
assert_equal [‘hello world’, ‘how are you?’], results[:path]
Still, this is an unfortunate situation. I would think this would
break quite a few Rails apps when they upgrade to 2.0. Also, %20 isn’t
a particularly pretty separator if you are trying to make your URLs
easier to read. Does anyone know why this was changed? Or workaround
for making spaces escape to something else?