module Bootsnap::LoadPathCache::ChangeObserver

Public Class Methods

register(arr, observer) click to toggle source
# File lib/bootsnap/load_path_cache/change_observer.rb, line 59
def self.register(arr, observer)
  return if arr.frozen? # can't register observer, but no need to.

  arr.instance_variable_set(:@lpc_observer, observer)
  ArrayMixin.instance_methods.each do |method_name|
    arr.singleton_class.send(:define_method, method_name, ArrayMixin.instance_method(method_name))
  end
end
unregister(arr) click to toggle source
# File lib/bootsnap/load_path_cache/change_observer.rb, line 68
def self.unregister(arr)
  return unless arr.instance_variable_defined?(:@lpc_observer) && arr.instance_variable_get(:@lpc_observer)

  ArrayMixin.instance_methods.each do |method_name|
    arr.singleton_class.send(:remove_method, method_name)
  end
  arr.instance_variable_set(:@lpc_observer, nil)
end