Hi,

In message "Re: Anonymous module undefined method error"
    on Sat, 21 May 2005 06:45:15 +0900, "johng" <jgoa... / gmail.com>
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.