Comments (3)
I've been thinking about introducing a sorted_query
field, but I'm pretty sure that using this behavior by default in the ===
method would be a mistake.
If implemented, it would use the OAuth normalization algorithm.
from addressable.
You didn't say why you think this would be a mistake.
I wouldn't close this so soon. This bit me in Webmock; it's a library where you stub a HTTP response by defining a URL and then, when that URL is requested, it returns a fake response. It compares URLs with the ===
operator, but was failing in some tests because of inconsistent query values ordering. Inconsistent ordering originated from the fact that hashes in 1.8 are unordered, and query values were populated from params in a hash.
If I had to get around this issue without patching Addressable, I would have to either ensure that query values are of consistent ordering when I build URIs (this would require a rewrite of a lot of my code; for instance I couldn't use URI#query_values=()
anymore) or I would have to patch Webmock to do a custom URL comparison. The latter 'solution' kinda defeats the purpose of using Addressable in the first place.
from addressable.
You should be able to use this form if you need order to be preserved:
[['key', 'value']]
Getting a consistent sort order is then as simple as:
{'key' => 'value'}.to_a
from addressable.
Related Issues (20)
- Fuzz test for parse/to_s round-trip
- Day HOT 5
- Dependabot couldn't find a Gemfile HOT 3
- Templates doesn't handle IPv6 IPs
- Invalid scheme format for ssh URL HOT 4
- Is it intended that `normalized_path` destroys the trailing dot when it's the only char? HOT 1
- Improve pure ruby IDNA implementation to match browsers behavior (IDNA2008 and UTS#46) HOT 3
- Equivalent of `URI.regexp(schemes)`? HOT 4
- Crypto mining
- undefined method `to_str' for :id:Symbol (NoMethodError) in 2.8.2 HOT 8
- Template expansion does not work with symbolized hashes in 2.8.1 HOT 1
- Update to 2.8.2 break test env HOT 1
- Any version after 2.8.1 causes errors in our test suite coming from addressable. HOT 8
- Drop support for Ruby 2.2 (and more?) HOT 3
- Disallow backtick in host HOT 1
- Normalize errors when trying to run a simple url normalize HOT 4
- Unsafe concurrent Hash access HOT 9
- k
- feed:http: crashes servers HOT 11
- Valid domain not parsing HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from addressable.