aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--railties/CHANGELOG5
-rw-r--r--railties/lib/dispatcher.rb6
2 files changed, 10 insertions, 1 deletions
diff --git a/railties/CHANGELOG b/railties/CHANGELOG
index 168d0c6b78..8bf2fafd6e 100644
--- a/railties/CHANGELOG
+++ b/railties/CHANGELOG
@@ -1,5 +1,10 @@
*SVN*
+* Rearrange application resetting and preparation, fix bug with leaking subclasses hash in ActiveRecord::Base [Rick Olson]
+
+ ActiveRecord::Base.reset_subclasses is called before Dependencies are cleared and classes removed.
+ ActiveRecord::Base.instantiate_observers is called during a Dispatcher preparation callback.
+
* Add missing mock directories from the autoload_paths configuration. [Rick Olson]
* Nested controller scaffolding also nests the generated layout. [iain d broadfoot]
diff --git a/railties/lib/dispatcher.rb b/railties/lib/dispatcher.rb
index 2a882ae1b4..17e5ae74f7 100644
--- a/railties/lib/dispatcher.rb
+++ b/railties/lib/dispatcher.rb
@@ -54,9 +54,9 @@ class Dispatcher
# mailers, and so forth. This allows them to be loaded again without having
# to restart the server (WEBrick, FastCGI, etc.).
def reset_application!
+ ActiveRecord::Base.reset_subclasses if defined?(ActiveRecord)
Dependencies.clear
Class.remove_class(*Reloadable.reloadable_classes)
- ActiveRecord::Base.reset if defined?(ActiveRecord)
end
@@ -159,3 +159,7 @@ class Dispatcher
self.preparation_callbacks_run = false
end
+
+Dispatcher.to_prepare :activerecord_instantiate_observers do
+ ActiveRecord::Base.instantiate_observers
+end if defined?(ActiveRecord)