diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2005-01-24 00:26:44 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2005-01-24 00:26:44 +0000 |
commit | f31291ab5a5d928f7f73f32fa9f2261c1f446476 (patch) | |
tree | da6f7231351274c29c7de2aec2dfb8fd5b9b48a7 | |
parent | 0942bfa7a96e981bf146dee1ad32fa81e68ee6e6 (diff) | |
download | rails-f31291ab5a5d928f7f73f32fa9f2261c1f446476.tar.gz rails-f31291ab5a5d928f7f73f32fa9f2261c1f446476.tar.bz2 rails-f31291ab5a5d928f7f73f32fa9f2261c1f446476.zip |
Another swing at reloading
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@479 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | actionpack/lib/action_controller/dependencies.rb | 5 | ||||
-rw-r--r-- | railties/CHANGELOG | 2 | ||||
-rw-r--r-- | 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 e1ede3d42a..6b43a3a57f 100644 --- a/actionpack/lib/action_controller/dependencies.rb +++ b/actionpack/lib/action_controller/dependencies.rb @@ -78,8 +78,9 @@ module ActionController #:nodoc: 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 c1a348dae7..d6cf19ebf5 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 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" |