diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2012-03-12 10:33:50 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2012-03-12 10:33:50 -0700 |
commit | 0f5b32cd0804a3fe26027176db57b8fbd9a52108 (patch) | |
tree | 40bb85372a391d84dbbb5a02ba6c6d812c24254e /activesupport | |
parent | fd22471313864c58cb911101d8c42e1fa46b4e42 (diff) | |
parent | be623677a3b05696e70518072576588cbeaf83cd (diff) | |
download | rails-0f5b32cd0804a3fe26027176db57b8fbd9a52108.tar.gz rails-0f5b32cd0804a3fe26027176db57b8fbd9a52108.tar.bz2 rails-0f5b32cd0804a3fe26027176db57b8fbd9a52108.zip |
Merge pull request #5394 from erichmenge/master
retrieve_cache_key should work on objects that act like arrays.
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/cache.rb | 1 | ||||
-rw-r--r-- | activesupport/test/caching_test.rb | 4 |
2 files changed, 5 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/cache.rb b/activesupport/lib/active_support/cache.rb index d7408eff9f..b9f196d7a9 100644 --- a/activesupport/lib/active_support/cache.rb +++ b/activesupport/lib/active_support/cache.rb @@ -91,6 +91,7 @@ module ActiveSupport case when key.respond_to?(:cache_key) then key.cache_key when key.is_a?(Array) then key.map { |element| retrieve_cache_key(element) }.to_param + when key.respond_to?(:to_a) then retrieve_cache_key(key.to_a) else key.to_param end.to_s end diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb index b03865da93..ba027f1ff0 100644 --- a/activesupport/test/caching_test.rb +++ b/activesupport/test/caching_test.rb @@ -69,6 +69,10 @@ class CacheKeyTest < ActiveSupport::TestCase def test_expand_cache_key_of_true assert_equal 'true', ActiveSupport::Cache.expand_cache_key(true) end + + def test_expand_cache_key_of_array_like_object + assert_equal 'foo/bar/baz', ActiveSupport::Cache.expand_cache_key(%w{foo bar baz}.to_enum) + end end class CacheStoreSettingTest < ActiveSupport::TestCase |