From f9ee7bd9c6438a471145ec06f15621ee6406c518 Mon Sep 17 00:00:00 2001 From: Andrew Kaspick Date: Thu, 23 Sep 2010 23:06:14 -0500 Subject: [PATCH] memoized protected methods should remain protected --- activesupport/lib/active_support/memoizable.rb | 2 ++ activesupport/test/memoizable_test.rb | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 0 deletions(-) diff --git a/activesupport/lib/active_support/memoizable.rb b/activesupport/lib/active_support/memoizable.rb index aa33ef7..68148a2 100644 --- a/activesupport/lib/active_support/memoizable.rb +++ b/activesupport/lib/active_support/memoizable.rb @@ -92,6 +92,8 @@ module ActiveSupport # if private_method_defined?(#{original_method.inspect}) # if private_method_defined?(:_unmemoized_mime_type) private #{symbol.inspect} # private :mime_type + elsif protected_method_defined?(#{original_method.inspect}) # elsif protected_method_defined?(:_unmemoized_mime_type) + protected #{symbol.inspect} # protected :mime_type end # end EOS end diff --git a/activesupport/test/memoizable_test.rb b/activesupport/test/memoizable_test.rb index 39420c5..105bb6e 100644 --- a/activesupport/test/memoizable_test.rb +++ b/activesupport/test/memoizable_test.rb @@ -34,6 +34,13 @@ class MemoizableTest < Test::Unit::TestCase memoize :name, :age + protected + + def memoize_protected_test + 'protected' + end + memoize :memoize_protected_test + private def is_developer? @@ -234,6 +241,13 @@ class MemoizableTest < Test::Unit::TestCase assert_raise(RuntimeError) { company.memoize :name } end + def test_protected_method_memoization + person = Person.new + + assert_raise(NoMethodError) { person.memoize_protected_test } + assert_equal "protected", person.send(:memoize_protected_test) + end + def test_private_method_memoization person = Person.new -- 1.6.0.4