From 0387d5b6f29a46884f2250caa8d82618f795bf13 Mon Sep 17 00:00:00 2001 From: Andrew Kaspick Date: Thu, 23 Sep 2010 16:48:35 -0500 Subject: [PATCH] memoized protected methods should remain protected Signed-off-by: Santiago Pastorino --- activesupport/lib/active_support/memoizable.rb | 2 ++ activesupport/test/memoizable_test.rb | 14 ++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/activesupport/lib/active_support/memoizable.rb b/activesupport/lib/active_support/memoizable.rb index 9fb506fea1b81..0a7bcd5bb8a8c 100644 --- a/activesupport/lib/active_support/memoizable.rb +++ b/activesupport/lib/active_support/memoizable.rb @@ -95,6 +95,8 @@ def #{symbol}(*args) # def m # 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 b11fa8d346bdf..bceac1315b285 100644 --- a/activesupport/test/memoizable_test.rb +++ b/activesupport/test/memoizable_test.rb @@ -36,6 +36,13 @@ def age memoize :name, :age + protected + + def memoize_protected_test + 'protected' + end + memoize :memoize_protected_test + private def is_developer? @@ -237,6 +244,13 @@ def test_double_memoization 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