mirror of
https://github.com/samsonjs/rack-attack.git
synced 2026-04-27 15:07:41 +00:00
Support a Dalli Connection Pool
This commit is contained in:
parent
d76444164a
commit
128c5aa9bf
3 changed files with 17 additions and 3 deletions
|
|
@ -14,8 +14,14 @@ module Rack
|
||||||
|
|
||||||
if defined?(::Redis::Store) && store.is_a?(::Redis::Store)
|
if defined?(::Redis::Store) && store.is_a?(::Redis::Store)
|
||||||
RedisStoreProxy.new(store)
|
RedisStoreProxy.new(store)
|
||||||
elsif defined?(::Dalli) && store.is_a?(::Dalli::Client)
|
elsif store.respond_to?(:with)
|
||||||
|
store.with do |conn|
|
||||||
|
if defined?(::Dalli) && conn.is_a?(::Dalli::Client)
|
||||||
DalliProxy.new(store)
|
DalliProxy.new(store)
|
||||||
|
else
|
||||||
|
raise NotImplementedError
|
||||||
|
end
|
||||||
|
end
|
||||||
else
|
else
|
||||||
store
|
store
|
||||||
end
|
end
|
||||||
|
|
@ -81,6 +87,12 @@ module Rack
|
||||||
rescue Dalli::DalliError
|
rescue Dalli::DalliError
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def delete(key)
|
||||||
|
with do |client|
|
||||||
|
client.delete(key)
|
||||||
|
end
|
||||||
|
rescue Dalli::DalliError
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -29,5 +29,5 @@ Gem::Specification.new do |s|
|
||||||
s.add_development_dependency 'activesupport', '>= 3.0.0'
|
s.add_development_dependency 'activesupport', '>= 3.0.0'
|
||||||
s.add_development_dependency 'redis-activesupport'
|
s.add_development_dependency 'redis-activesupport'
|
||||||
s.add_development_dependency 'dalli'
|
s.add_development_dependency 'dalli'
|
||||||
|
s.add_development_dependency 'connection_pool'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,11 +15,13 @@ describe Rack::Attack::Cache do
|
||||||
|
|
||||||
require 'active_support/cache/dalli_store'
|
require 'active_support/cache/dalli_store'
|
||||||
require 'active_support/cache/redis_store'
|
require 'active_support/cache/redis_store'
|
||||||
|
require 'connection_pool'
|
||||||
cache_stores = [
|
cache_stores = [
|
||||||
ActiveSupport::Cache::MemoryStore.new,
|
ActiveSupport::Cache::MemoryStore.new,
|
||||||
ActiveSupport::Cache::DalliStore.new("localhost"),
|
ActiveSupport::Cache::DalliStore.new("localhost"),
|
||||||
ActiveSupport::Cache::RedisStore.new("localhost"),
|
ActiveSupport::Cache::RedisStore.new("localhost"),
|
||||||
Dalli::Client.new,
|
Dalli::Client.new,
|
||||||
|
ConnectionPool.new { Dalli::Client.new },
|
||||||
Redis::Store.new
|
Redis::Store.new
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue