From: usa@... Date: 2016-03-25T09:42:57+00:00 Subject: [ruby-dev:49533] [Ruby trunk Bug#12121] 異なる名前空間にある同名の定数により Module.constans の結果の並びが変わる Issue #12121 has been updated by Usaku NAKAMURA. Backport changed from 2.1: REQUIRED, 2.2: REQUIRED, 2.3: REQUIRED to 2.1: DONE, 2.2: REQUIRED, 2.3: REQUIRED ruby_2_1 r54285 merged revision(s) 54231. ---------------------------------------- Bug #12121: 異なる名前空間にある同名の定数により Module.constans の結果の並びが変わる https://bugs.ruby-lang.org/issues/12121#change-57696 * Author: Koichi ITO * Status: Closed * Priority: Normal * Assignee: * ruby -v: ruby 2.4.0dev (2016-02-27 trunk 53957) [x86_64-darwin13] * Backport: 2.1: DONE, 2.2: REQUIRED, 2.3: REQUIRED ---------------------------------------- Ruby 2.4.0-dev で、Ruby 2.3.0 以前と変わっている振る舞いについてです。 自身のモジュール定義の前に、異なる名前空間で同名の定数が定義されていると Module.constants の結果の並びに影響を与える振る舞いに変わっているように見えます。 ```ruby module M1 module A end end module M2 module B end module A end end ``` ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin13] での実行結果です。 ```ruby p M2.constants # => [:B, :A] ``` ruby 2.4.0dev (2016-02-27 trunk 53957) [x86_64-darwin13] での実行結果です。 ```ruby p M2.constants # => [:A, :B] ``` 依存する異なるライブラリで、自身が使おうとする定数と同名の定数が定義されていると、 Module.constants の結果が Ruby 2.3.0 以前と異なる順序で返って困るということがありました。 -- https://bugs.ruby-lang.org/