How do I create a class instance from a string name in ruby?

In rails you can just do:

clazz = 'ExampleClass'.constantize

In pure ruby:

clazz = Object.const_get('ExampleClass')

with modules:

module Foo
  class Bar
  end
end

you would use

> clazz = 'Foo::Bar'.split('::').inject(Object) {|o,c| o.const_get c}
  => Foo::Bar 
> clazz.new
  => #<Foo::Bar:0x0000010110a4f8> 

Leave a Comment