読者です 読者をやめる 読者になる 読者になる

Ruby の ObjectSpace を利用して、オブジェクト名からクラスオブジェクトを探す

Ruby

Ruby で例えば "String" という文字列からその名前のクラスオブジェクトを取得したい場合があるとします。 そういう場合は ObjectSpace から逆算して検出することができます。

# クラスオブジェクトの一覧を取得する
classes =ObjectSpace.each_object(::Class)

# クラスオブジェクトの一覧から該当するクラスオブジェクトを探す
target = "String"
result = classes.find { |klass| klass.name == target }
p result == String
# => truk

また、Rails では String#constantize というメソッドが定義されており、上記と同等の機能があります。

"String".constantize   
# => String

[参照]

http://railsdoc.com/references/constantize