diff options
-rw-r--r-- | activesupport/CHANGELOG | 2 | ||||
-rw-r--r-- | activesupport/lib/active_support/dependencies.rb | 1 | ||||
-rw-r--r-- | activesupport/test/dependencies_test.rb | 4 |
3 files changed, 6 insertions, 1 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG index 64040371c4..0fc1488974 100644 --- a/activesupport/CHANGELOG +++ b/activesupport/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fix Dependencies.autoloaded? to ignore anonymous modules. Closes #6561. [Nicholas Seckar] + * 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] diff --git a/activesupport/lib/active_support/dependencies.rb b/activesupport/lib/active_support/dependencies.rb index aa5b8d20da..98f74453f0 100644 --- a/activesupport/lib/active_support/dependencies.rb +++ b/activesupport/lib/active_support/dependencies.rb @@ -278,6 +278,7 @@ module Dependencies #:nodoc: # Determine if the given constant has been automatically loaded. def autoloaded?(desc) + return false if desc.is_a?(Module) && desc.name.empty? # Empty name => anonymous module. name = to_constant_name desc return false unless qualified_const_defined? name return autoloaded_constants.include?(name) diff --git a/activesupport/test/dependencies_test.rb b/activesupport/test/dependencies_test.rb index d5c9cb58cb..95a5380dbd 100644 --- a/activesupport/test/dependencies_test.rb +++ b/activesupport/test/dependencies_test.rb @@ -305,6 +305,8 @@ class DependenciesTest < Test::Unit::TestCase assert Dependencies.autoloaded?("::ModuleFolder") assert Dependencies.autoloaded?(:ModuleFolder) + assert ! Dependencies.autoloaded?(Module.new) + Object.send :remove_const, :ModuleFolder end end @@ -705,7 +707,7 @@ class DependenciesTest < Test::Unit::TestCase def test_load_once_constants_should_not_be_unloaded with_loading 'autoloading_fixtures' do Dependencies.load_once_paths = Dependencies.load_paths - ::A + ::A.to_s assert defined?(A) Dependencies.clear assert defined?(A) |