aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--activesupport/lib/dependencies.rb6
-rw-r--r--railties/lib/dispatcher.rb2
2 files changed, 7 insertions, 1 deletions
diff --git a/activesupport/lib/dependencies.rb b/activesupport/lib/dependencies.rb
index c47faad38d..4f4dfa4a71 100644
--- a/activesupport/lib/dependencies.rb
+++ b/activesupport/lib/dependencies.rb
@@ -29,6 +29,12 @@ module Dependencies
self.loaded = [ ]
end
+ def reload
+ old_loaded = loaded.dup
+ clear
+ old_loaded.each { |file_name| depend_on(file_name, true) }
+ end
+
private
def require_or_load(file_name)
mechanism == :load ? silence_warnings { load("#{file_name}.rb") } : require(file_name)
diff --git a/railties/lib/dispatcher.rb b/railties/lib/dispatcher.rb
index fe7142be9d..cb0b3f1b25 100644
--- a/railties/lib/dispatcher.rb
+++ b/railties/lib/dispatcher.rb
@@ -51,7 +51,7 @@ class Dispatcher
begin
remove_class_hierarchy(controller_class(controller_name), ActionController::Base)
ActiveRecord::Base.reset_column_information_and_inheritable_attributes_for_all_subclasses
- Dependencies.clear
+ Dependencies.reload
rescue Object => exception
# Compilation errors are caught on the first run through
end