def load_classes_with_requirements(klasses)
klasses.uniq!
while klasses.size > 0
size_at_start = klasses.size
failed_classes = []
error_map = {}
klasses.each do |klass|
klasses.delete(klass)
begin
load_file klass
rescue NameError => ne
error_map[klass] = ne
failed_classes.push(klass)
end
end
failed_classes.each { |k| klasses.push(k) unless klasses.include?(k) }
if klasses.size == size_at_start && klasses.size != 0
error_map.only(*failed_classes).each do |klass, e|
Merb.logger.fatal! "Could not load #{klass}:\n\n#{e.message} - (#{e.class})\n\n#{(e.backtrace || []).join("\n")}"
end
raise LoadError, "Could not load #{failed_classes.inspect} (see log for details)."
end
break if(klasses.size == size_at_start || klasses.size == 0)
end
end