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