Actions
Bug #11508
closedHash#eql? does not respect hash ordering
    Bug #11508:
    Hash#eql? does not respect hash ordering
  
Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.2.2p95 (2015-04-13 revision 50295) [x86_64-darwin14]
Description
{a:1,b:2}.eql?({b:2,a:1})
=> true
The eql? (aka ==) operator on hashes does not compare the ordering of the compared hashes.
This behaviour is documented in Hash#== (and should not be touched, ever)
I'd like to suggest:
- extend the documentation of Hash#==to explicitely state, that ordering is not compared
- add a new function in ruby5 to compare hashes with respect of the ordering,
 aka{a:1,b:2}.eql_with_order?({b:2,a:1})=>false
        
           Updated by eike.rb (Eike Dierks) about 10 years ago
          Updated by eike.rb (Eike Dierks) about 10 years ago
          
          
        
        
      
      ruby5 -> ruby3
maybe we should try it in rails support first.
        
           Updated by nobu (Nobuyoshi Nakada) about 10 years ago
          Updated by nobu (Nobuyoshi Nakada) about 10 years ago
          
          
        
        
      
      - Description updated (diff)
        
           Updated by nobu (Nobuyoshi Nakada) about 10 years ago
          Updated by nobu (Nobuyoshi Nakada) about 10 years ago
          
          
        
        
      
      - Status changed from Open to Closed
Applied in changeset r51763.
hash.c: [DOC] orders do not matter [ci skip]
- hash.c (rb_hash_equal, rb_hash_eql): [DOC] the orders of each
 hashes are not compared. [Bug #11508]
        
           Updated by nobu (Nobuyoshi Nakada) about 10 years ago
          Updated by nobu (Nobuyoshi Nakada) about 10 years ago
          
          
        
        
      
      New ticket for a new method, please.
Actions