Hi,
I’m a bit mystified by the following:
Strange
module Foo
extend self
def bar; ‘bar’ end
end
Foo.bar
module Foo
remove_method :bar
end
Foo.bar
=> ‘bar’ # eh?
Normal
module Bar
extend self
def foo; ‘foo’ end
end
module Bar
remove_method :foo
end
Bar.foo
undefined method `foo’ for Bar:Module (NoMethodError)
Broken
$ irb
module Qux
extend self
def bar; ‘bar’ end
end
Qux.bar
module Qux
remove_method :bar
end
GC.start # eats Qux#bar ?
Qux.bar
[BUG] terminated node (0x4057fdd8)
ruby 1.8.4 (2005-12-24) [i486-linux]
The crash happens only in irb in my testing.
What might be causing this? If anyone with more
knowledge of Ruby’s internals could shed
light on this, I’d be grateful.