mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Update load once paths to prevent nested once constants from being detected and claimed by an external non-once load. References #6720
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5782 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
This commit is contained in:
parent
1e170da30d
commit
e2acd16810
2 changed files with 8 additions and 2 deletions
|
@ -1,5 +1,7 @@
|
|||
*SVN*
|
||||
|
||||
* Update load once paths to prevent nested once constants from being detected and claimed by an external non-once load. [Nicholas Seckar]
|
||||
|
||||
* Deprecation: silence warnings when reporting test errors. [Jeremy Kemper]
|
||||
|
||||
* Hash#slice(*keys) returns a new hash with only the given keys. #slice! replaces the hash with only the given keys. Works with HashWithIndifferentAccess also. [Jeremy Kemper]
|
||||
|
|
|
@ -130,7 +130,7 @@ module Dependencies #:nodoc:
|
|||
# Given +path+, a filesystem path to a ruby file, return an array of constant
|
||||
# paths which would cause Dependencies to attempt to load this file.
|
||||
#
|
||||
def loadable_constants_for_path(path, bases = load_paths - load_once_paths)
|
||||
def loadable_constants_for_path(path, bases = load_paths)
|
||||
path = $1 if path =~ /\A(.*)\.rb\Z/
|
||||
expanded_path = File.expand_path(path)
|
||||
|
||||
|
@ -169,6 +169,10 @@ module Dependencies #:nodoc:
|
|||
nil
|
||||
end
|
||||
|
||||
def load_once_path?(path)
|
||||
load_once_paths.any? { |base| path.starts_with? base }
|
||||
end
|
||||
|
||||
# Attempt to autoload the provided module name by searching for a directory
|
||||
# matching the expect path suffix. If found, the module is created and assigned
|
||||
# to +into+'s constants with the name +const_name+. Provided that the directory
|
||||
|
@ -200,7 +204,7 @@ module Dependencies #:nodoc:
|
|||
result = load_without_new_constant_marking path
|
||||
end
|
||||
|
||||
autoloaded_constants.concat newly_defined_paths
|
||||
autoloaded_constants.concat newly_defined_paths unless load_once_path?(path)
|
||||
autoloaded_constants.uniq!
|
||||
log "loading #{path} defined #{newly_defined_paths * ', '}" unless newly_defined_paths.empty?
|
||||
return result
|
||||
|
|
Loading…
Reference in a new issue