From f31291ab5a5d928f7f73f32fa9f2261c1f446476 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Mon, 24 Jan 2005 00:26:44 +0000 Subject: [PATCH] Another swing at reloading git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@479 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../lib/action_controller/dependencies.rb | 5 +++-- railties/CHANGELOG | 2 ++ railties/lib/dispatcher.rb | 21 +++++++------------ 3 files changed, 13 insertions(+), 15 deletions(-) diff --git a/actionpack/lib/action_controller/dependencies.rb b/actionpack/lib/action_controller/dependencies.rb index e1ede3d42af14..6b43a3a57f399 100644 --- a/actionpack/lib/action_controller/dependencies.rb +++ b/actionpack/lib/action_controller/dependencies.rb @@ -78,8 +78,9 @@ def inherited(child) inherited_without_model(child) return if child.controller_name == "application" # otherwise the ApplicationController in Rails will include itself begin - child.model(Inflector.singularize(child.controller_name)) - rescue LoadError + Object.const_get(child.controller_name.singularize.classify) + child.model(child.controller_name.singularize) + rescue NameError, LoadError # No neither singular or plural model available for this controller end end diff --git a/railties/CHANGELOG b/railties/CHANGELOG index c1a348dae723f..d6cf19ebf5cdd 100644 --- a/railties/CHANGELOG +++ b/railties/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed that models that weren't referenced in associations weren't being reloaded in the development mode by reinstating the reload + * Fixed that generate scaffold would produce bad functional tests * Fixed that FCGI can also display SyntaxErrors diff --git a/railties/lib/dispatcher.rb b/railties/lib/dispatcher.rb index cb0b3f1b25128..56d9199d2017a 100644 --- a/railties/lib/dispatcher.rb +++ b/railties/lib/dispatcher.rb @@ -34,29 +34,24 @@ def dispatch(cgi = CGI.new, session_options = ActionController::CgiRequest::DEFA controller_name, module_name = controller_name(request.parameters), module_name(request.parameters) - require_dependency("application") - require_dependency(controller_path(controller_name, module_name)) + require_or_load("application") + require_or_load(controller_path(controller_name, module_name)) + + if Dependencies.mechanism == :load + ActiveRecord::Base.reset_column_information_and_inheritable_attributes_for_all_subclasses + Dependencies.reload + end controller_class(controller_name).process(request, response).out rescue Object => exception ActionController::Base.process_with_exception(request, response, exception).out ensure - reset_application(controller_name) if Dependencies.mechanism == :load + remove_class_hierarchy(controller_class(controller_name), ActionController::Base) if Dependencies.mechanism == :load Breakpoint.deactivate_drb if defined?(BREAKPOINT_SERVER_PORT) end end private - def reset_application(controller_name) - begin - remove_class_hierarchy(controller_class(controller_name), ActionController::Base) - ActiveRecord::Base.reset_column_information_and_inheritable_attributes_for_all_subclasses - Dependencies.reload - rescue Object => exception - # Compilation errors are caught on the first run through - end - end - def controller_path(controller_name, module_name = nil) if module_name "#{module_name}/#{Inflector.underscore(controller_name)}_controller"