63. あるクラスのサブクラスを取 得する class Object def subclasses_of(*superclasses) subclasses = [] superclasses.each do |sup| ObjectSpace.each_object(class << sup; self; end) do |k| if k != sup && (k.name.blank? || eval(quot;defined?(::#{k}) && ::#{k}.object_id == k.object_idquot;)) subclasses << k end end end subclasses end end 62/67
![本当は怖いObjectSpace.each_object](https://cdn-ak-scissors.b.st-hatena.com/image/square/21321d36c7b2896a620d3873a08dc50909ad19c7/height=288;version=1;width=512/https%3A%2F%2Fcdn.slidesharecdn.com%2Fss_thumbnails%2Factuallyveryscareobjecteach-1229265062465013-1-thumbnail.jpg%3Fwidth%3D640%26height%3D640%26fit%3Dbounds)