Class: Rack::Attack::StoreProxy

Inherits:
Object
  • Object
show all
Defined in:
lib/rack/attack/store_proxy.rb

Defined Under Namespace

Classes: RedisStoreProxy

Class Method Summary collapse

Class Method Details

.build(store) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/rack/attack/store_proxy.rb', line 6

def self.build(store)
  # RedisStore#increment needs different behavior, so detect that
  # (method has an arity of 2; must call #expire separately
  if defined?(::ActiveSupport::Cache::RedisStore) && store.is_a?(::ActiveSupport::Cache::RedisStore)
    # ActiveSupport::Cache::RedisStore doesn't expose any way to set an expiry,
    # so use the raw Redis::Store instead
    store = store.instance_variable_get(:@data)
  end

  if defined?(::Redis::Store) && store.is_a?(::Redis::Store)
    RedisStoreProxy.new(store)
  else
    store
  end
end