From: Daneel van Tonder Date: 2004-12-04T18:42:39+09:00 Subject: Re: how to create an object of a class you don't know yet Bradley, Todd wrote: > 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. > > > class GMClassManager @@classHash = { 'CLASS_ROOM_DEFAULT' => GMRoom, 'CLASS_ROOM_LOGIN' => GMLoginRoom, } def GMClassManager.getRoomObject( valueClassId ) tmpClass = @@classHash[ valueClassId ] if not tmpClass == nil tmpClass.new else nil end end end This works for me