Module: PooledRedis

Defined in:
lib/pooled_redis.rb,
lib/pooled_redis/version.rb

Constant Summary collapse

VERSION =
'0.1.1'

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.gem_versionObject



4
5
6
# File 'lib/pooled_redis/version.rb', line 4

def self.gem_version
  Gem::Version.new VERSION
end

.setup_rails_cache(app) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/pooled_redis.rb', line 54

def setup_rails_cache(app)
  # We need to use initializer to be able to access
  # Rails.configuration.database_configuration.
  app.initializer :configure_cache, before: :initialize_cache, group: :all do
    cache_config = Rails.configuration.
      database_configuration[Rails.env]['cache'].try!(:with_indifferent_access)
    adapter = cache_config.try!(:delete, :adapter).try!(:to_sym)
    next unless adapter
    if adapter == :redis_store
      # Workaround to support `:db` option:
      pool_config ||= {
        pool:     cache_config.delete(:pool)    || 5,
        timeout:  cache_config.delete(:timeout) || 5,
      }
      cache_config = {
        pool: ConnectionPool.new(pool_config) { Redis::Store.new(cache_config) }
      }
    end
    app.config.cache_store = adapter, cache_config
  end
end

Instance Method Details

#redisObject



49
50
51
# File 'lib/pooled_redis.rb', line 49

def redis
  @redis ||= redis_pool.simple_connection
end

#redis_configObject

Override this method unless using Rails.



30
31
32
33
34
35
36
# File 'lib/pooled_redis.rb', line 30

def redis_config
  @redis_config = begin
    config = ActiveRecord::Base.connection_config[:redis].with_indifferent_access
    config[:logger] = Rails.logger if config.delete(:debug)
    config
  end
end

#redis_poolObject



45
46
47
# File 'lib/pooled_redis.rb', line 45

def redis_pool
  @redis_pool ||= ConnectionPool.new(redis_pool_config) { Redis.new(redis_config) }
end

#redis_pool_configObject



38
39
40
41
42
43
# File 'lib/pooled_redis.rb', line 38

def redis_pool_config
  @redis_pool_config ||= {
    pool:     redis_config.delete(:pool)    || 5,
    timeout:  redis_config.delete(:timeout) || 5,
  }
end