From: George Ogata Date: 2006-02-12T21:18:24+09:00 Subject: Re: accessing Class from class symbol "treefrog" writes: > Hi, > I'm trying to work out how to access Class methods when I only have the > class symbol > > class Foo > def Foo.hello > puts "Hello Foo" > end > end > > class Bar > def Bar.hello > puts "Hello Bar" > end > end > > str="Foo" > > # I could do this, but there must be a better way. > eval "#{str}.hello" > > Kernel doesn't have send, so I can't pass the class as a symbol to > Kernel, and then send the method. Kernel does have `send', but classes aren't methods... :-) Foo and Bar in your case are constants. Since they're defined at toplevel scope (i.e., not nested in any class or module definitions), they're under Object. So to get the class, do: klass = Object.const_get('Foo') # symbols also accepted And to call a method, do: klass.send('hello') # symbols also accepted Hope this helps!