From 8bf79739b4219eb1d6464e6eb4853e92e81d7621 Mon Sep 17 00:00:00 2001
From: wycats <wycats@gmail.com>
Date: Wed, 4 Aug 2010 02:16:48 -0700
Subject: require_dependency should require using the normal mechanism if
 possible to avoid double-requires

---
 activesupport/lib/active_support/dependencies.rb | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

(limited to 'activesupport/lib')

diff --git a/activesupport/lib/active_support/dependencies.rb b/activesupport/lib/active_support/dependencies.rb
index 2b80bd214f..1b93eac7ee 100644
--- a/activesupport/lib/active_support/dependencies.rb
+++ b/activesupport/lib/active_support/dependencies.rb
@@ -276,14 +276,22 @@ module ActiveSupport #:nodoc:
     end
 
     def depend_on(file_name, swallow_load_errors = false, message = "No such file to load -- %s.rb")
-      path = search_for_file(file_name)
-      require_or_load(path || file_name)
-    rescue LoadError => load_error
-      unless swallow_load_errors
-        if file_name = load_error.message[/ -- (.*?)(\.rb)?$/, 1]
-          raise LoadError.new(message % file_name).copy_blame!(load_error)
+      #path = search_for_file(file_name)
+      require_or_load(file_name)
+    rescue LoadError
+      begin
+        if path = search_for_file(file_name)
+          require_or_load(path)
+        else
+          raise
+        end
+      rescue LoadError => load_error
+        unless swallow_load_errors
+          if file_name = load_error.message[/ -- (.*?)(\.rb)?$/, 1]
+            raise LoadError.new(message % file_name).copy_blame!(load_error)
+          end
+          raise
         end
-        raise
       end
     end
 
-- 
cgit v1.2.3