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.
>