Changeset 3521
- Timestamp:
- 02/02/06 05:41:00 (3 years ago)
- Files:
-
- trunk/actionmailer/lib/action_mailer/base.rb (modified) (1 diff)
- trunk/actionpack/lib/action_controller/base.rb (modified) (1 diff)
- trunk/actionpack/lib/action_controller/caching.rb (modified) (1 diff)
- trunk/activerecord/lib/active_record/base.rb (modified) (1 diff)
- trunk/activerecord/lib/active_record/observer.rb (modified) (1 diff)
- trunk/activesupport/CHANGELOG (modified) (1 diff)
- trunk/activesupport/lib/active_support/reloadable.rb (modified) (1 diff)
- trunk/activesupport/test/reloadable_test.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionmailer/lib/action_mailer/base.rb
r3495 r3521 124 124 # Action Mailer subclasses should be reloaded by the dispatcher in Rails 125 125 # when Dependencies.mechanism = :load. 126 def self.inherited(child) #:nodoc: 127 child.send :include, Reloadable 128 super 129 end 130 126 include Reloadable::OnlySubclasses 127 131 128 private_class_method :new #:nodoc: 132 129 trunk/actionpack/lib/action_controller/base.rb
r3497 r3521 225 225 class Base 226 226 DEFAULT_RENDER_STATUS_CODE = "200 OK" 227 228 # Action Controller subclasses should be reloaded by the dispatcher in Rails 229 # when Dependencies.mechanism = :load. 230 def self.inherited(child) #:nodoc: 231 child.send :include, Reloadable 232 super 233 end 234 227 228 include Reloadable::OnlySubclasses 229 235 230 # Determines whether the view has access to controller internals @request, @response, @session, and @template. 236 231 # By default, it does. trunk/actionpack/lib/action_controller/caching.rb
r3519 r3521 524 524 # ActiveRecord::Observer will mark this class as reloadable even though it should not be. 525 525 # However, subclasses of ActionController::Caching::Sweeper should be Reloadable 526 def self.reloadable? #:nodoc: 527 self != Sweeper 528 end 529 526 include Reloadable::OnlySubclasses 527 530 528 def before(controller) 531 529 self.controller = controller trunk/activerecord/lib/active_record/base.rb
r3493 r3521 243 243 # on to any new database connections made and which can be retrieved on both a class and instance level by calling +logger+. 244 244 cattr_accessor :logger 245 245 246 include Reloadable::OnlySubclasses 247 246 248 def self.inherited(child) #:nodoc: 247 child.send :include, Reloadable248 249 @@subclasses[self] ||= [] 249 250 @@subclasses[self] << child trunk/activerecord/lib/active_record/observer.rb
r3493 r3521 84 84 # Observer subclasses should be reloaded by the dispatcher in Rails 85 85 # when Dependencies.mechanism = :load. 86 def self.inherited(child) #:nodoc: 87 child.send :include, Reloadable 88 super 89 end 90 86 include Reloadable::OnlySubclasses 87 91 88 # Attaches the observer to the supplied model classes. 92 89 def self.observe(*models) trunk/activesupport/CHANGELOG
r3519 r3521 1 1 *SVN* 2 3 * Add Reloadable::OnlySubclasses which handles the common case where a base class should not be reloaded, but its subclasses should be. [Nicholas Seckar] 2 4 3 5 * Further improvements to reloading code [Nicholas Seckar, Trevor Squires] trunk/activesupport/lib/active_support/reloadable.rb
r3519 r3521 15 15 end 16 16 end 17 18 module OnlySubclasses 19 class << self 20 def included(base) #nodoc: 21 base.send :include, Reloadable 22 (class << base; self; end;).class_eval do 23 define_method(:reloadable?) { self != base } 24 end 25 end 26 end 27 end 17 28 end trunk/activesupport/test/reloadable_test.rb
r3519 r3521 28 28 include Reloadable 29 29 end 30 31 class OnlySubclassesReloadable 32 include Reloadable::OnlySubclasses 33 end 34 class ASubclassOfOnlySubclassesReloadable < OnlySubclassesReloadable 35 end 36 37 class AnOnlySubclassReloadableClassSubclassingAReloadableClass 38 include Reloadable::OnlySubclasses 39 end 40 41 class ASubclassofAOnlySubclassReloadableClassWhichWasSubclassingAReloadableClass < AnOnlySubclassReloadableClassSubclassingAReloadableClass 42 end 30 43 end 31 44 … … 44 57 end 45 58 59 def test_only_subclass_reloadable 60 assert ! ReloadableTestSandbox::OnlySubclassesReloadable.reloadable? 61 assert ReloadableTestSandbox::ASubclassOfOnlySubclassesReloadable.reloadable? 62 end 63 64 def test_inside_hierarchy_only_subclass_reloadable 65 assert ! ReloadableTestSandbox::AnOnlySubclassReloadableClassSubclassingAReloadableClass.reloadable? 66 assert ReloadableTestSandbox::ASubclassofAOnlySubclassReloadableClassWhichWasSubclassingAReloadableClass.reloadable? 67 end 68 46 69 def test_removable_classes 47 reloadables = %w(AReloadableClass AReloadableClassWithSubclasses AReloadableSubclass AClassWhichDefinesItsOwnReloadable) 48 non_reloadables = %w(ANonReloadableSubclass AModuleIncludingReloadable) 70 reloadables = %w( 71 AReloadableClass 72 AReloadableClassWithSubclasses 73 AReloadableSubclass 74 AClassWhichDefinesItsOwnReloadable 75 ASubclassOfOnlySubclassesReloadable 76 ) 77 non_reloadables = %w( 78 ANonReloadableSubclass 79 AModuleIncludingReloadable 80 OnlySubclassesReloadable 81 ) 49 82 50 83 results = Reloadable.reloadable_classes