Ruby の ObjectSpace を利用して、オブジェクト名からクラスオブジェクトを探す
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