"Ross Bamford" <rossrt / roscopeco.co.uk> wrote in message 
news:1142581508.1295.3.camel / jukebox.roscopeco...
> On Fri, 2006-03-17 at 13:55 +0900, Gaudi Mi wrote:
>> At runtime I have the name of a class in a string, and I want to call a
>> method on the class having that name. How do I do that?
>
> Here are two possible ways:
>
> str = "Array"
> # => "Array"
>
> ary_clz = eval(str)
> # => Array
>
> ary_clz.class
> # => Class
>
> ary_clz.new
> # => []
>
> ##################
>
> ary_clz = Object.const_get(str)
> # => Array
>
> ary_clz.new
> # => []

const_get is definitely preferred as it doesn't show the same security 
risks as eval does.

Addtional note, for nested class names:

name.split(/::/).inject(Object) {|cl,n| cl.const_get(n)}.address()

Kind regards

    robert