diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index 19db8ac8736a59c47d27c010dfc5b1e627b2891f..973eaef471443f23a32cfe3067524674cce9fef5 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 1ac4819d47bb8fd1a0dd6e9b9713926678683ac5..0eacc4c07887a22a1fffdba44495041418dcea50 100644 --- a/activesupport/lib/active_support/cache/mem_cache_store.rb +++ b/activesupport/lib/active_support/cache/mem_cache_store.rb @@ -46,6 +46,9 @@ def initialize(*addresses) options = addresses.extract_options! super(options) + 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 diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb index 09781f3e7ae7c5a7bdcb3adebcfe883236782ab6..7fd76ddf8b66e5940295d903547f5b2524399c25 100644 --- a/activesupport/test/caching_test.rb +++ b/activesupport/test/caching_test.rb @@ -110,6 +110,14 @@ def test_mem_cache_fragment_cache_store_with_given_mem_cache assert_kind_of(ActiveSupport::Cache::MemCacheStore, store) end + def test_mem_cache_fragment_cache_store_with_not_dalli_client + Dalli::Client.expects(:new).never + memcache = Object.new + assert_raises(ArgumentError) do + ActiveSupport::Cache.lookup_store :mem_cache_store, memcache + end + end + def test_mem_cache_fragment_cache_store_with_multiple_servers Dalli::Client.expects(:new).with(%w[localhost 192.168.1.1], {}) store = ActiveSupport::Cache.lookup_store :mem_cache_store, "localhost", '192.168.1.1'