Open nelhage-stripe opened 5 years ago
Thanks for the report, this is news to me! I'm open to anyone taking a run at fixing this but I'm unlikely to find time to work on it myself.
I am also experiencing this issue. Does any have any suggestions on a work around until there is a proper fix?
I was able to workaround by switching a $LOAD_PATH << new_dir
to $LOAD_PATH.unshift(new_dir)
in the location that added the problematic directory, but this isn't necessarily applicable to all cases.
In vanilla MRI, if you
require
a file via absolute path, which is also present on$LOAD_PATH
, MRI internally caches it under its relative path, and will allow it to satisfy futurerequire "relative/path"
calls, even if such a call would otherwise resolve to a file earlier in$LOAD_PATH
.bootsnap
does not properly implement this behavior, resulting in a difference in behavior versus MRI'srequire
, which turned out to break our application. This is honestly an odd behavior for us to be relying on and I'm going to attempt to work around it locally, but I wanted to report the bug for visibility.This behavior is rather unclear to me from the Ruby documentation, and arguably this could be reported as an MRI bug instead.
I've built a simple reproducer that demonstrates different behavior under
bootsnap
and without here: https://github.com/nelhage-stripe/bootsnap-reproducer