From: Minero Aoki Date: 2001-04-23T21:44:55+09:00 Subject: [ruby-talk:14074] Re: RCR: getClassFromString method In mail "[ruby-talk:14059] Re: RCR: getClassFromString method" Marko Schulz wrote: > > [ Getting a Class by its name as String ] > > You could simply use an eval: You could use also Module#const_get (because class name is a constant in Ruby). def str2class( name ) mod = Object name.split('::').each {|n| mod = mod.const_get(n) } mod end more correctly say: def str2class( name ) m = /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/.match(name) or raise ArgumentError, "illegal constant name: #{name}" mod = Object m[1].split('::').each {|n| mod = mod.const_get(n) } mod end If you use ruby 1.7: def str2class( name ) m = /\A(?:::)?([A-Z]\w*(?:::[A-Z]\w*)*)\z/.match(name) or raise ArgumentError, "illegal constant name: #{name}" m[1].split('::').inject( Object ) {|mod,n| mod = mod.const_get(n) } end Minero Aoki