Issue #4502 has been updated by nobu (Nobuyoshi Nakada). With latest version, A.X occurs NameError instead of returning B::X. ---------------------------------------- Bug #4502: strange Module.new behaviour https://bugs.ruby-lang.org/issues/4502#change-35130 Author: evilbrain (Andy Bogdanov) Status: Assigned Priority: Normal Assignee: nobu (Nobuyoshi Nakada) Category: core Target version: 2.0.0 ruby -v: ruby 1.9.1p430 (2010-08-16 revision 28998) [i386-mingw32] =begin First I create a proc: p = proc { self::X = Class.new def self.X X.new end } Then I create a module: A = Module.new(&p) puts A.X # => #<A::X:0x9c2e774> Then I create another module: B = Module.new(&p) puts B.X # => #<B::X:0x9c39304> Everything seems to be ok. But after module B was created (({A.X})) started to return instances of (({B::X})) puts A.X # => #<B::X:0x9c38238> When (({self::X.new})) is used instead of (({X.new})) everything works as expected. More info can be found here http://www.ruby-forum.com/topic/1275717 =end
on 2012-12-29 03:47
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.