diff options
Diffstat (limited to 'railties/lib/dispatcher.rb')
-rw-r--r-- | railties/lib/dispatcher.rb | 21 |
1 files changed, 8 insertions, 13 deletions
diff --git a/railties/lib/dispatcher.rb b/railties/lib/dispatcher.rb index cb0b3f1b25..56d9199d20 100644 --- a/railties/lib/dispatcher.rb +++ b/railties/lib/dispatcher.rb @@ -34,29 +34,24 @@ class Dispatcher 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" |