How to create an object of a class you don't know yet

Thanks for all the suggestions, everyone. I had guessed
that there must be an Object method to do this (const_get),
but I couldn't find it listed in Pickaxe II's reference
to the Object class.

Todd.

···

-----Original Message-----
From: Bradley, Todd
Sent: Friday, December 03, 2004 11:45 AM
To: ruby-talk@ruby-lang.org
Subject: how to create an object of a class you don't know yet

Hi, I'm just now getting into Ruby's OO-ness, and could use
some advice.
I'm trying to create an object, but which specific class needs to be
determined at runtime. I figured out how to do this by creating a
string and executing it using the "eval" command, but I know
there must
be an easier way. My first guess was to do something like
#{answer}.new
but that didn't work.

Here's my code:

class Foo
  def method1
  end
end

class Bar
  def method2
  end
end

# Pretend this was determined at runtime
answer = "Foo"

# There must be a better way of doing this:

myobj = Object.new # Needs to exist in this scope
mystring = "myobj = #{answer}.new"

eval mystring

puts "I just created a #{myobj.class} object."

Any advice is appreciated. Thanks in advance!

Todd.

Bradley, Todd wrote:

Thanks for all the suggestions, everyone. I had guessed
that there must be an Object method to do this (const_get),
but I couldn't find it listed in Pickaxe II's reference
to the Object class.

It's Module#const_get. Object is a Class and thus a Module and thus there is Object.const_get.