aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/abstract_controller/base.rb
diff options
context:
space:
mode:
authorAaron Patterson <aaron.patterson@gmail.com>2012-10-25 10:49:04 -0700
committerAaron Patterson <aaron.patterson@gmail.com>2012-10-25 10:49:13 -0700
commit6033e8aeb003a37c0ebce8f6edb4349d94c8e712 (patch)
treeb5f60f29b662fa21e9a1db19af853a5b75ae20bf /actionpack/lib/abstract_controller/base.rb
parentf5ae64dc284712089adb66b55c2a9abcc3f6d8b4 (diff)
downloadrails-6033e8aeb003a37c0ebce8f6edb4349d94c8e712.tar.gz
rails-6033e8aeb003a37c0ebce8f6edb4349d94c8e712.tar.bz2
rails-6033e8aeb003a37c0ebce8f6edb4349d94c8e712.zip
fix uninitialized ivar warnings
Diffstat (limited to 'actionpack/lib/abstract_controller/base.rb')
-rw-r--r--actionpack/lib/abstract_controller/base.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/actionpack/lib/abstract_controller/base.rb b/actionpack/lib/abstract_controller/base.rb
index 388e043f0b..56dc9ab7a1 100644
--- a/actionpack/lib/abstract_controller/base.rb
+++ b/actionpack/lib/abstract_controller/base.rb
@@ -34,6 +34,15 @@ module AbstractController
@abstract = true
end
+ def inherited(klass) # :nodoc:
+ # define the abstract ivar on subclasses so that we don't get
+ # uninitialized ivar warnings
+ unless klass.instance_variable_defined?(:@abstract)
+ klass.instance_variable_set(:@abstract, false)
+ end
+ super
+ end
+
# A list of all internal methods for a controller. This finds the first
# abstract superclass of a controller, and gets a list of all public
# instance methods on that abstract class. Public instance methods of
@@ -42,6 +51,7 @@ module AbstractController
# (ActionController::Metal and ActionController::Base are defined as abstract)
def internal_methods
controller = self
+
controller = controller.superclass until controller.abstract?
controller.public_instance_methods(true)
end