Ruby how to reset class methods -


using module_eval, code allows me dynamically create , add new methods class based on input parameters. see post example ruby class_eval , yield

now question how reset class original methods? there simple method can use reset class it's original state? reason once new methods added class, persists , need rid of them if create new object different set of methods.

also must apologize if question doesn't quite make sense, i've been 24 hours , needed rest think clearly. if not clear, can provide example. in advance.

edit: added complete solution

if keep list of methods added in earlier post, can use remove_method remove these methods like:

class mytest   @@methods_list = []    def self.show_methods     @@methods_list   end    def self.reset_methods     @@methods_list.each |method|       remove_method(method)     end     @@methods_list = []   end    def self.add_methods     define_method("method1")  { puts "this method1" }     define_method("method2")  { puts "this method2" }     true   end    def self.method_added(method_name)     @@methods_list << method_name.to_s     puts "added: " + method_name.to_s + ", list: " + @@methods_list.inspect   end end 

now can try out following:

>> require 'mytest.rb' >> t = mytest.new # => #<mytest:0x2b1e293247f0> >> mytest.add_methods added: method1, list: ["method1"] added: method2, list: ["method1", "method2"] >> t.method1 # method available: method1 >> mytest.reset_methods >> t.method1 # method undefined now, we'd expect error nomethoderror: undefined method `method1' #<mytest:0x2b1e293247f0>     (irb):6 

Comments

Popular posts from this blog

c++ - Convert big endian to little endian when reading from a binary file -

C#: Application without a window or taskbar item (background app) that can still use Console.WriteLine() -

unicode - Are email addresses allowed to contain non-alphanumeric characters? -