Issue #11149 has been updated by Dvis Mosns.


Actually yes, I was wrong on this and it is expected behavior.

When one wants without '?' and '#' correct way is to set to nil and not to empty string ''

~~~
p.query = nil
p.fragment = nil
~~~

----------------------------------------
Bug #11149: URI.parse keeps '?' for query and '#' for fragment even if theyare empty
https://bugs.ruby-lang.org/issues/11149#change-52460

* Author: Dvis Mosns
* Status: Assigned
* Priority: Normal
* Assignee: Yui NARUSE
* ruby -v: ruby 2.2.1p85 (2015-02-26 revision 49769) [x64-mingw32]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
~~~
p = URI.parse('http://example.com/path?query#fragment')
p.query = ''
p.fragment = ''
puts p.to_s
~~~

will output "http://example.com/path?#" but I think it should be "http://example.com/path" without '?' and '#'




-- 
https://bugs.ruby-lang.org/