From 6033e8aeb003a37c0ebce8f6edb4349d94c8e712 Mon Sep 17 00:00:00 2001 From: Aaron Patterson Date: Thu, 25 Oct 2012 10:49:04 -0700 Subject: [PATCH] fix uninitialized ivar warnings --- actionpack/lib/abstract_controller/base.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) 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