diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2005-01-02 18:32:56 +0000 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2005-01-02 18:32:56 +0000 |
commit | 375568b7cb476285a9f8ea2c748d4987a477a119 (patch) | |
tree | 7fe592d6b1ff4c4e4a5a4df3bb6f30246a679e83 | |
parent | 569f2ea85bbe7edd96e81d883d1da6f22d203a87 (diff) | |
download | rails-375568b7cb476285a9f8ea2c748d4987a477a119.tar.gz rails-375568b7cb476285a9f8ea2c748d4987a477a119.tar.bz2 rails-375568b7cb476285a9f8ea2c748d4987a477a119.zip |
Fixed problems with dependency caching and controller hierarchies on Ruby 1.8.2 in development mode #351
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@317 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r-- | railties/CHANGELOG | 2 | ||||
-rw-r--r-- | railties/Rakefile | 2 | ||||
-rw-r--r-- | railties/lib/dispatcher.rb | 12 |
3 files changed, 12 insertions, 4 deletions
diff --git a/railties/CHANGELOG b/railties/CHANGELOG index 35477eed8f..f10ab87e09 100644 --- a/railties/CHANGELOG +++ b/railties/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Fixed problems with dependency caching and controller hierarchies on Ruby 1.8.2 in development mode #351 + * Added automated rewriting of the shebang lines on installs through the gem rails command #379 [Manfred Stienstra] * Fixed that generated action_mailers doesnt need to require the action_mailer since thats already done in the environment #382 [Lucas Carlson] diff --git a/railties/Rakefile b/railties/Rakefile index 21cc910b09..7370df8483 100644 --- a/railties/Rakefile +++ b/railties/Rakefile @@ -233,7 +233,7 @@ spec = Gem::Specification.new do |s| on top of either MySQL, PostgreSQL, or SQLite with eRuby-based templates. EOF - s.add_dependency('rake', '>= 0.4.11') + s.add_dependency('rake', '>= 0.4.14') s.add_dependency('activerecord', '>= 1.3.0') s.add_dependency('actionpack', '>= 1.1.0') s.add_dependency('actionmailer', '>= 0.5.0') diff --git a/railties/lib/dispatcher.rb b/railties/lib/dispatcher.rb index 9cea6ce249..3298611227 100644 --- a/railties/lib/dispatcher.rb +++ b/railties/lib/dispatcher.rb @@ -41,10 +41,9 @@ class Dispatcher ActionController::Base.process_with_exception(request, response, exception).out ensure if Dependencies.mechanism == :load - Object.send(:remove_const, "ApplicationController") if Object.const_defined?(:ApplicationController) - Object.send(:remove_const, controller_class_name(controller_name)) if Object.const_defined?(controller_class_name(controller_name)) + remove_class_hierarchy(controller_class(controller_name), ActionController::Base) ActiveRecord::Base.reset_column_information_and_inheritable_attributes_for_all_subclasses - Dependencies.reload + Dependencies.reload rescue nil # Ignore out of order reloading errors for Controllers end Breakpoint.deactivate_drb if defined?(BREAKPOINT_SERVER_PORT) @@ -74,4 +73,11 @@ class Dispatcher def self.module_name(parameters) parameters["module"].gsub(/[^_a-zA-Z0-9]/, "").untaint if parameters["module"] end + + def self.remove_class_hierarchy(klass, until_superclass) + while klass + Object.send(:remove_const, "#{klass}".intern) + klass = (klass.superclass unless until_superclass == klass.superclass) + end + end end
\ No newline at end of file |