class Redis::Rack::Connection

Public Class Methods

new(options = {}) click to toggle source
# File lib/redis/rack/connection.rb, line 4
def initialize(options = {})
  @options = options
  @store = options[:redis_store]
  @pool = options[:pool]

  if @pool && !@pool.is_a?(ConnectionPool)
    raise ArgumentError, "pool must be an instance of ConnectionPool"
  end

  if @store && !@store.is_a?(Redis::Store)
    raise ArgumentError, "redis_store must be an instance of Redis::Store (currently #{@store.class.name})"
  end
end

Public Instance Methods

pool() click to toggle source
# File lib/redis/rack/connection.rb, line 30
def pool
  @pool ||= ConnectionPool.new(pool_options) { store } if pooled?
end
pool_options() click to toggle source
# File lib/redis/rack/connection.rb, line 38
def pool_options
  {
    size: @options[:pool_size],
    timeout: @options[:pool_timeout]
  }.reject { |key, value| value.nil? }.to_h
end
pooled?() click to toggle source
# File lib/redis/rack/connection.rb, line 26
def pooled?
  [:pool, :pool_size, :pool_timeout].any? { |key| @options.key?(key) }
end
store() click to toggle source
# File lib/redis/rack/connection.rb, line 34
def store
  @store ||= Redis::Store::Factory.create(@options[:redis_server])
end
with(&block) click to toggle source
# File lib/redis/rack/connection.rb, line 18
def with(&block)
  if pooled?
    pool.with(&block)
  else
    block.call(store)
  end
end