生成されているオブジェクト一覧の取得
Deamonizeのソースより。ObjectSpace.each_object()を使うと、生成されているオブジェクトの一覧を取得できます。引数でクラスorモジュールを指定すると、そのクラスorモジュールを継承するオブジェクトが列挙されます。
# ねこ class Kitten def initialize( name, children=[] ) @name = name @children = children end attr :name end # ねこを3x3作成。 kittens = [] 3.times {|i| name = "kitten-" + i.to_s children = [ Kitten.new( name + "child-1"), Kitten.new( name + "child-2") ] kittens << Kitten.new( name, children ) } # すべてのねこのインスタンスを列挙する。 ObjectSpace.each_object(Kitten) {|object| puts object.name }
実行結果です。
kitten-2 kitten-2child-2 kitten-2child-1 kitten-1 kitten-1child-2 kitten-1child-1 kitten-0 kitten-0child-2 kitten-0child-1
クラス一覧がみたい!
ObjectSpace.each_object(Class) {|object| puts object }
実行結果です。長いので途中まで。
Binding UnboundMethod Method Proc SystemStackError LocalJumpError Struct::Tms Process::Status Time Dir File::Stat File IO EOFError IOError Range MatchData Regexp ...