Class: ActiveSupport::DescendantsTracker::DescendantsArray
Relationships & Source Files | |
Super Chains via Extension / Inclusion / Inheritance | |
Instance Chain:
|
|
Inherits: | Object |
Defined in: | activesupport/lib/active_support/descendants_tracker.rb |
Overview
DescendantsArray
is an array that contains weak references to classes. Note: DescendantsArray
is redundant with WeakSet
, however WeakSet
when used on Ruby 2.7 or 3.0 can trigger a Ruby crash: bugs.ruby-lang.org/issues/18928
Class Method Summary
- .new ⇒ DescendantsArray constructor
Instance Attribute Summary
::Enumerable
- Included
#many? | Returns |
Instance Method Summary
::Enumerable
- Included
#compact_blank | Returns a new |
#exclude? | The negative of the |
#excluding | Returns a copy of the enumerable excluding the specified elements. |
#in_order_of | Returns a new |
#including | Returns a new array that includes the passed elements. |
#index_by | Convert an enumerable to a hash, using the block result as the key and the element as the value. |
#index_with | Convert an enumerable to a hash, using the element as the key and the block result as the value. |
#maximum | Calculates the maximum from the extracted elements. |
#minimum | Calculates the minimum from the extracted elements. |
#pick | Extract the given key from the first element in the enumerable. |
#pluck | Extract the given key from each element in the enumerable. |
#sole | Returns the sole item in the enumerable. |
#without | Alias for Enumerable#excluding. |
#as_json |
::ActiveSupport::EnumerableCoreExt::Constants
- Included
Constructor Details
.new ⇒ DescendantsArray
# File 'activesupport/lib/active_support/descendants_tracker.rb', line 120
def initialize @refs = [] end
Instance Method Details
#<<(klass)
[ GitHub ]# File 'activesupport/lib/active_support/descendants_tracker.rb', line 124
def <<(klass) @refs << WeakRef.new(klass) end
#cleanup!
[ GitHub ]# File 'activesupport/lib/active_support/descendants_tracker.rb', line 142
def cleanup! @refs.delete_if { |ref| !ref.weakref_alive? } end
#each
[ GitHub ]# File 'activesupport/lib/active_support/descendants_tracker.rb', line 128
def each @refs.reject! do |ref| yield ref.__getobj__ false rescue WeakRef::RefError true end self end
#refs_size
[ GitHub ]# File 'activesupport/lib/active_support/descendants_tracker.rb', line 138
def refs_size @refs.size end
#reject!
[ GitHub ]# File 'activesupport/lib/active_support/descendants_tracker.rb', line 146
def reject! @refs.reject! do |ref| yield ref.__getobj__ rescue WeakRef::RefError true end end