alternative resolution to vendor load problem

Signed-off-by: David Heinemeier Hansson <david@loudthinking.com>
This commit is contained in:
Matt Jones 2008-11-19 12:13:52 -05:00 committed by David Heinemeier Hansson
parent 9ad165cb9d
commit fb1eebac94

@ -313,8 +313,13 @@ def loadable_constants_for_path(path, bases = load_paths)
nesting = expanded_path[(expanded_root.size)..-1]
nesting = nesting[1..-1] if nesting && nesting[0] == ?/
next if nesting.blank?
[ nesting.camelize ]
nesting_camel = nesting.camelize
begin
qualified_const_defined?(nesting_camel)
rescue NameError
next
end
[ nesting_camel ]
end.flatten.compact.uniq
end
@ -485,28 +490,24 @@ def new_constants_in(*descs)
# Build the watch frames. Each frame is a tuple of
# [module_name_as_string, constants_defined_elsewhere]
watch_frames = descs.collect do |desc|
begin
if desc.is_a? Module
mod_name = desc.name
initial_constants = desc.local_constant_names
elsif desc.is_a?(String) || desc.is_a?(Symbol)
mod_name = desc.to_s
if desc.is_a? Module
mod_name = desc.name
initial_constants = desc.local_constant_names
elsif desc.is_a?(String) || desc.is_a?(Symbol)
mod_name = desc.to_s
# Handle the case where the module has yet to be defined.
initial_constants = if qualified_const_defined?(mod_name)
mod_name.constantize.local_constant_names
else
[]
end
# Handle the case where the module has yet to be defined.
initial_constants = if qualified_const_defined?(mod_name)
mod_name.constantize.local_constant_names
else
raise Argument, "#{desc.inspect} does not describe a module!"
[]
end
[mod_name, initial_constants]
rescue NameError
# mod_name isn't a valid constant name
nil
else
raise Argument, "#{desc.inspect} does not describe a module!"
end
end.compact
[mod_name, initial_constants]
end
constant_watch_stack.concat watch_frames