I
Ilmari Heikkinen
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.
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.