title: Is it possible to reverse the included module in a class?
body: <p>You include the modules in classes to extend the class functionality in terms of both adding class methods and instance methods to that particular class.</p>
  
  <pre><code>module M
   def self.class_method_from_module
    'from class_method_from_module'
   end
  
   def instance_method_from_module
    'from instance_method_from_module'
   end
  end
  
  class C
   include M
  
   def self.class_method
    'from class_method'
   end
  
   def instance_method
    'from instance_method'
   end
  end
  
  puts C.class_method =&gt; 'from class_method'
  
  puts C.class_method_from_module =&gt; 'from class_method_from_module'
  
  puts C.new.instance_method =&gt; 'from instance_method'
  
  puts C.new.instance_method_from_module =&gt; 'instance_method_from_module'
  </code></pre>
  
  <p>Now even after removing the module M from the memory with the following:</p>
  
  <pre><code>Object.send(:remove_const, :M) #remove the module M
  
  puts C.class_method_from_module =&gt; 'from class_method_from_module'
  
  puts C.new.instance_method_from_module =&gt; 'instance_method_from_module'
  </code></pre>
  
  <p>instead of method missing. Why is that? What is the best way to remove the functionality added by a module to a class?</p>