From: "Aleksi Niemelä" Date: 2000-11-14T10:16:35+09:00 Subject: [ruby-talk:6332] Re: dup vs clone > Eval seems reasonable. If you _know_ that the name is a class, you > could also use Object.const_get(string) > > Object.const_get("Array") # => Array Eval is probably good. But the simple way doesn't always work. The problem is the classes which are inside a name space: module Foo class Bar end end def find(klass,name) begin k = klass.const_get(name) puts "Found #{name} from #{klass}, so it is #{k}" rescue NameError puts "Did not find #{name} from #{klass}" end end [Object, Module, Module.const_get("Foo")].each do |klass| ["Foo", "Bar"].each do |name| find(klass, name) end puts end Outputting: Found Foo from Object, so it is Foo Did not find Bar from Object Found Foo from Module, so it is Foo Did not find Bar from Module Found Foo from Foo, so it is Foo Found Bar from Foo, so it is Foo::Bar - Aleksi