How can I reverse ruby's include function.
Posted
by Glen
on Stack Overflow
See other posts from Stack Overflow
or by Glen
Published on 2010-03-08T17:01:08Z
Indexed on
2010/03/08
20:21 UTC
Read the original article
Hit count: 211
I'll explain what i'm looking for in code as thats probably the most succinct:
module Mixin
def method
puts "Foo"
end
end
class Whatever
include Mixin
end
w = Whatever.new
w.method
=> "Foo"
# some magic here
w2 = Whatever.new
w.method
=> NoMethodError
I had tried just undefining the Mixin module using remove_const, but this doesn't seem to make any difference to Whatever. I had assumed that #include just added a reference to the module into the class's method resolution chain - but this behaviour doesn't agree with that.
Can anyone tell me what include actually does behind the scenes, and how to reverse this?
© Stack Overflow or respective owner