aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/class
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/core_ext/class')
-rw-r--r--activesupport/lib/active_support/core_ext/class/removal.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/core_ext/class/removal.rb b/activesupport/lib/active_support/core_ext/class/removal.rb
index 0c70e7181a..f768313abe 100644
--- a/activesupport/lib/active_support/core_ext/class/removal.rb
+++ b/activesupport/lib/active_support/core_ext/class/removal.rb
@@ -1,12 +1,21 @@
class Class #:nodoc:
+
+ # Will unassociate the class with its subclasses as well as uninitializing the subclasses themselves.
+ # >> Integer.remove_subclasses
+ # => [Bignum, Fixnum]
+ # >> Fixnum
+ # NameError: uninitialized constant Fixnum
def remove_subclasses
Object.remove_subclasses_of(self)
end
+ # Returns a list of classes that inherit from this class in an array.
+ # Example: Integer.subclasses => ["Bignum", "Fixnum"]
def subclasses
Object.subclasses_of(self).map { |o| o.to_s }
end
+ # Allows you to remove individual subclasses or a selection of subclasses from a class without removing all of them.
def remove_class(*klasses)
klasses.flatten.each do |klass|
# Skip this class if there is nothing bound to this name