各 TumblrPost インスタンスまたは各 TumblrPost サブクラスへのアクセスについて話しているのかどうかはわかりません。
各インスタンスにアクセスしたい場合は、TumblrPost でクラス インスタンス変数を設定し、コンストラクターで新しいインスタンスごとに更新できます。
class TumblrPost
@all_instances = []
class << self
attr_accessor :all_instances
end
def initialize
TumblrPost.all_instances << self
end
end
TumblrTextPost = Class.new(TumblrPost)
t1 = TumblrPost.new
t2 = TumblrTextPost.new
puts TumblrPost.all_instances
一方、TumblrPost の各サブクラスを反復できるようにしたい場合は、継承されたフックを使用してそれらを追跡できます。
class TumblrPost
@all_subclasses = []
class << self
attr_accessor :all_subclasses
end
def self.inherited(subclass)
@all_subclasses << subclass
end
end
TumblrTextPost = Class.new(TumblrPost)
puts TumblrPost.all_subclasses
出典: Russ Olsen のEloquent Ruby