Project

General

Profile

Actions

Bug #11899

closed

`Object#public_methods` returns unordered array in Ruby 2.3.0

Added by llxff (Aleksandr Fomin) over 8 years ago. Updated over 8 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]
[ruby-core:72522]

Description

Previous ruby versions returned methods with same order. But this order was changed in Ruby 2.3.0.

Ruby 1.9.3:

1.9.3-p551 :001 > class B
1.9.3-p551 :002?>     def self.init
1.9.3-p551 :003?>         define_method(:f) {}
1.9.3-p551 :004?>         define_method(:b) {}
1.9.3-p551 :005?>         define_method(:c) {}
1.9.3-p551 :006?>       end
1.9.3-p551 :007?>     def a;end
1.9.3-p551 :008?>   end
 => nil 
1.9.3-p551 :009 > B.init
 => #<Proc:0x0000000217ee98@(irb):5 (lambda)> 
1.9.3-p551 :010 > B.new.public_methods(false)
 => [:a, :f, :b, :c] 

Ruby 2.2.0:

2.2.0 :007 > class B
2.2.0 :008?>   def self.init
2.2.0 :009?>     define_method(:f) {}
2.2.0 :010?>     define_method(:b) {}
2.2.0 :011?>     define_method(:c) {}
2.2.0 :012?>     end
2.2.0 :013?>   def a;end
2.2.0 :014?>   end
 => :a 
2.2.0 :015 > B.init
 => :c 
2.2.0 :016 > B.new.public_methods(false)
 => [:a, :f, :b, :c] 

Ruby 2.3.0:

2.3.0 :001 > class B
2.3.0 :002?>     def self.init
2.3.0 :003?>         define_method(:f) {}
2.3.0 :004?>         define_method(:b) {}
2.3.0 :005?>         define_method(:c) {}
2.3.0 :006?>       end
2.3.0 :007?>     def a;end
2.3.0 :008?>   end
 => :a 
2.3.0 :009 > B.init
 => :c 
2.3.0 :010 > B.new.public_methods(false)
 => [:b, :f, :a, :c] 

Updated by nobu (Nobuyoshi Nakada) over 8 years ago

  • Status changed from Open to Rejected

It is not guaranteed.

Actions

Also available in: Atom PDF

Like0
Like0