Add spec for require after $LOAD_PATH change #1881
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When developer add something to $LOAD_PATH and require once again the same file ruby should not require it once again.
Example:
Rubinius have
lib/racc/parser.rb
file. And this file will require after bootstrap.After require
rubygems
$LOAD_PATH
will change and now we have access to two version onracc/parser
(from Rubinius/lib
and/gems/racc
). When user try to require once again rubinius will search via$LOAD_PATH
and hitracc/parser
from RUBYGEMS. In ruby 1.9 mode all paths are expanded so rubinius will require once againracc/parser
. This is because in$LOADED_FEATURES
we can find only[rubinius_path]/lib/racc/parser.rb
. When CodeLoader will find file in$LOAD_PATH
([rubygems]/racc/parser.rb
) and full path of this file is not part of$LOADED_FEATURES
soparser.rb
file will be load once again.Any ideas how to recognize already loaded file (but from other full path)?
This spec reproduce @txus gist click
Related to issue #1571