Ruby symbol to class

intargc picture intargc · Aug 5, 2009 · Viewed 18k times · Source

Is there a way in Ruby to take a symbol or string and turn it into a class of the same name?

For instance, if I have a class such as

class Bob
  def talk
     puts "Hi, I'm bob"
  end
end

And a method I have somewhere else in the code is passed a symbol :bob, can I in some way turn that into the class Bob? Maybe something like

b = :Bob.new
b.talk

Or is there a way to do something similar to this?

Answer

August Lilleaas picture August Lilleaas · Aug 5, 2009

There are many ways to do this. Your lack of context makes it impossible to elect a "best" way. Here's a few ayways.

Kernel.const_get(:Bob)

eval(:Bob.to_s)

Kernel.const_get(:bob.to_s.capitalize)