From 3e65ac9a80654c1a805b82c129eac2e06d1a2b51 Mon Sep 17 00:00:00 2001 From: Bo Anderson Date: Fri, 27 Oct 2023 17:44:39 +0100 Subject: [PATCH] Fix $LOAD_PATH.dup to be Ractor shareable This fixes an incompatiblity with `did_you_mean`: https://github.com/ruby/did_you_mean/blob/b5f83b2eeaf6344766174123ccaa7a58ddd579e3/lib/did_you_mean/spell_checkers/require_path_checker.rb#L12 --- lib/bootsnap/load_path_cache/change_observer.rb | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/lib/bootsnap/load_path_cache/change_observer.rb b/lib/bootsnap/load_path_cache/change_observer.rb index 60ad609..b209ab8 100644 --- a/lib/bootsnap/load_path_cache/change_observer.rb +++ b/lib/bootsnap/load_path_cache/change_observer.rb @@ -54,6 +54,18 @@ def uniq!(*args) ret end end + + def dup + new_obj = super + new_obj.remove_instance_variable(:@lpc_observer) + new_obj + end + + def clone + new_obj = super + ChangeObserver.unregister(new_obj) + new_obj + end end def self.register(arr, observer)