Sha256: c36adb5598578413229d15b87e447586320b53c91b6aa23706f18abee349f50c

Contents?: true

Size: 592 Bytes

Versions: 5

Compression:

Stored size: 592 Bytes

Contents

class Object #:nodoc:
  def remove_subclasses_of(superclass)
    subclasses_of(superclass).each { |subclass| Object.send(:remove_const, subclass) rescue nil }
  end

  def subclasses_of(superclass)
    subclasses = []
    ObjectSpace.each_object(Class) do |k|
      next if !k.ancestors.include?(superclass) || superclass == k || k.to_s.include?("::") || subclasses.include?(k.to_s)
      subclasses << k.to_s
    end
    subclasses
  end
end

class Class #:nodoc:
  def remove_subclasses
    Object.remove_subclasses_of(self)
  end

  def subclasses
    Object.subclasses_of(self)
  end
end

Version data entries

5 entries across 5 versions & 5 rubygems

Version Path
devise_sociable-0.1.0 vendor/bundle/gems/actionpack-1.4.0/lib/action_controller/support/core_ext/object_and_class.rb
actionpack-1.4.0 lib/action_controller/support/core_ext/object_and_class.rb
activerecord-1.6.0 lib/active_record/support/core_ext/object_and_class.rb
activesupport-1.0.0 lib/active_support/core_ext/object_and_class.rb
facets-0.6.3 lib/facet-dev/rails/object_and_class.rb