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: 182

Filed under:
|
|

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

Related posts about ruby

Related posts about metaprogramming