From: johng Date: 2005-05-21T12:40:15+09:00 Subject: Re: Anonymous module undefined method error Hi, In message "Re: Anonymous module undefined method error" on Sat, 21 May 2005 06:45:15 +0900, "johng" writes: | I am new to Ruby so please excuse my question. I did search |usenet for an answer but couldn't find one: | |I have a variable, data, that was read from a file and has the |following contents: | |def foo | return "foo" |end | |My code is this: | |amodule = Module.new |amodule.class_eval(data) | |puts(amodule.public_instance_methods) -> outputs "foo" | |amodule.foo -> fails saying method is undefined |A public *instance* method means methods are available for their |instances, "amodule" is a module, not an instance. When you include a |module to a class, and instantiate from the class, you can call "foo". | | matz. Ah, ok, I was fooled by the Module.new. I had assumed that it made an instance. So, what I wanted to do, was have a class defined in a file and call a known method on it. For instance: class Bar def Bar.foo return "foo" end end But I will not know the class name contained in the file (Bar). I tried the approach from the original post so that I could call a defined method that would instantiate the class for me. I believe I can do this now relatively easily. It does though put more requirements on the file. I wonder though, if there is a cleaner way? Thanks, John.