aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/CHANGELOG2
-rw-r--r--activesupport/lib/active_support/dependencies.rb1
-rw-r--r--activesupport/test/dependencies_test.rb4
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)