diff options
author | Andrew Kaspick <andrew@redlinesoftware.com> | 2010-09-23 16:48:35 -0500 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2010-09-24 20:31:12 -0300 |
commit | fb08e334d61b1706db754733b209075b0154b57e (patch) | |
tree | 532e994412d32504ea48e1492579eee5c6df724a /activesupport | |
parent | 72543b2e6358a502257a0e1eac61b0e3164937dd (diff) | |
download | rails-fb08e334d61b1706db754733b209075b0154b57e.tar.gz rails-fb08e334d61b1706db754733b209075b0154b57e.tar.bz2 rails-fb08e334d61b1706db754733b209075b0154b57e.zip |
memoized protected methods should remain protected
Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/memoizable.rb | 2 | ||||
-rw-r--r-- | 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 9fb506fea1..0a7bcd5bb8 100644 --- a/activesupport/lib/active_support/memoizable.rb +++ b/activesupport/lib/active_support/memoizable.rb @@ -95,6 +95,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 b11fa8d346..bceac1315b 100644 --- a/activesupport/test/memoizable_test.rb +++ b/activesupport/test/memoizable_test.rb @@ -36,6 +36,13 @@ class MemoizableTest < ActiveSupport::TestCase memoize :name, :age + protected + + def memoize_protected_test + 'protected' + end + memoize :memoize_protected_test + private def is_developer? @@ -237,6 +244,13 @@ class MemoizableTest < ActiveSupport::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 |