diff options
author | Guillermo Iguaran <guilleiguaran@gmail.com> | 2014-01-03 13:43:16 -0800 |
---|---|---|
committer | Guillermo Iguaran <guilleiguaran@gmail.com> | 2014-01-03 13:43:16 -0800 |
commit | 88c3fd1ef1f3bbd4f8fdc15887cc382a287fbd10 (patch) | |
tree | 3af6b6433215c77247b87b64a2e2587f512484b0 | |
parent | 05a81c5fe2efe08a171cd3dbef3873c1f0e5fae3 (diff) | |
parent | e7f56a7fe8fbb10e62a18b836c27aa1a0f7c5464 (diff) | |
download | rails-88c3fd1ef1f3bbd4f8fdc15887cc382a287fbd10.tar.gz rails-88c3fd1ef1f3bbd4f8fdc15887cc382a287fbd10.tar.bz2 rails-88c3fd1ef1f3bbd4f8fdc15887cc382a287fbd10.zip |
Merge pull request #13583 from arthurnn/mem_cache_store_fix
mem_cache_store requires dalli, so only accept dalli/client
-rw-r--r-- | activesupport/CHANGELOG.md | 4 | ||||
-rw-r--r-- | activesupport/lib/active_support/cache/mem_cache_store.rb | 10 | ||||
-rw-r--r-- | activesupport/test/caching_test.rb | 8 |
3 files changed, 12 insertions, 10 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 19db8ac873..973eaef471 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,7 @@ +* MemCacheStore should only accept a Dalli::Client, or create one. + + *arthurnn* + * Don't lazy load the `tzinfo` library as it causes problems on Windows. Fixes #13553 diff --git a/activesupport/lib/active_support/cache/mem_cache_store.rb b/activesupport/lib/active_support/cache/mem_cache_store.rb index 512296554f..0eacc4c078 100644 --- a/activesupport/lib/active_support/cache/mem_cache_store.rb +++ b/activesupport/lib/active_support/cache/mem_cache_store.rb @@ -41,17 +41,15 @@ module ActiveSupport # # If no addresses are specified, then MemCacheStore will connect to # localhost port 11211 (the default memcached port). - # - # Instead of addresses one can pass in a MemCache-like object. For example: - # - # require 'memcached' # gem install memcached; uses C bindings to libmemcached - # ActiveSupport::Cache::MemCacheStore.new(Memcached::Rails.new("localhost:11211")) def initialize(*addresses) addresses = addresses.flatten options = addresses.extract_options! super(options) - if addresses.first.respond_to?(:get) + unless [String, Dalli::Client, NilClass].include?(addresses.first.class) + raise ArgumentError, "First argument must be an empty array, an array of hosts or a Dalli::Client instance." + end + if addresses.first.is_a?(Dalli::Client) @data = addresses.first else mem_cache_options = options.dup diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb index 51007402a1..7fd76ddf8b 100644 --- a/activesupport/test/caching_test.rb +++ b/activesupport/test/caching_test.rb @@ -110,12 +110,12 @@ class CacheStoreSettingTest < ActiveSupport::TestCase assert_kind_of(ActiveSupport::Cache::MemCacheStore, store) end - def test_mem_cache_fragment_cache_store_with_given_mem_cache_like_object + def test_mem_cache_fragment_cache_store_with_not_dalli_client Dalli::Client.expects(:new).never memcache = Object.new - def memcache.get() true end - store = ActiveSupport::Cache.lookup_store :mem_cache_store, memcache - assert_kind_of(ActiveSupport::Cache::MemCacheStore, store) + assert_raises(ArgumentError) do + ActiveSupport::Cache.lookup_store :mem_cache_store, memcache + end end def test_mem_cache_fragment_cache_store_with_multiple_servers |