From 2b37d59976268013b7e518e5af244947f688d315 Mon Sep 17 00:00:00 2001 From: Nicholas Seckar Date: Wed, 16 Aug 2006 20:54:25 +0000 Subject: Fix const_missing to behave responsibly when called within anonymous modules git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4779 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activesupport/lib/active_support/dependencies.rb | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'activesupport/lib/active_support') diff --git a/activesupport/lib/active_support/dependencies.rb b/activesupport/lib/active_support/dependencies.rb index c0ee5ddfa8..5f3c35839b 100644 --- a/activesupport/lib/active_support/dependencies.rb +++ b/activesupport/lib/active_support/dependencies.rb @@ -65,7 +65,7 @@ module Dependencies #:nodoc: # Record that we've seen this file *before* loading it to avoid an # infinite loop with mutual dependencies. loaded << expanded - + if load? log "loading #{file_name}" begin @@ -179,6 +179,11 @@ module Dependencies #:nodoc: def load_missing_constant(from_mod, const_name) log_call from_mod, const_name + # If we have an anonymous module, all we can do is attempt to load from Object. + from_mod = Object if from_mod.name.empty? + + raise ArgumentError, "Expected #{from_mod} is not missing constant #{const_name}!" if from_mod.const_defined?(const_name) + qualified_name = qualified_name_for from_mod, const_name path_suffix = qualified_name.underscore name_error = NameError.new("uninitialized constant #{qualified_name}") -- cgit v1.2.3