module PooledRedis
Constants
- VERSION
Public Class Methods
extend_rails()
click to toggle source
# File lib/pooled_redis.rb, line 39 def extend_rails Rails.class_eval { extend PooledRedis } if defined?(Rails) end
gem_version()
click to toggle source
# File lib/pooled_redis/version.rb, line 4 def self.gem_version Gem::Version.new VERSION end
setup_rails_cache(app)
click to toggle source
# File lib/pooled_redis.rb, line 43 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
Public Instance Methods
redis()
click to toggle source
# File lib/pooled_redis.rb, line 96 def redis @redis ||= redis_pool.simple_connection end
redis_config()
click to toggle source
Override this method unless using Rails.
# File lib/pooled_redis.rb, line 67 def redis_config @redis_config ||= begin config = ActiveRecord::Base.connection_config[:redis].with_indifferent_access config[:logger] = Rails.logger if config.delete(:debug) require 'redis/namespace' if config[:namespace] config end end
redis_pool()
click to toggle source
# File lib/pooled_redis.rb, line 83 def redis_pool @redis_pool ||= begin block = if redis_config[:block] redis_config[:block] elsif redis_config[:namespace] -> { Redis::Namespace.new(redis_config[:namespace], redis: Redis.new(redis_config)) } else -> { Redis.new(redis_config) } end ConnectionPool.new(redis_pool_config, &block) end end
redis_pool_config()
click to toggle source
# File lib/pooled_redis.rb, line 76 def redis_pool_config @redis_pool_config ||= { pool: redis_config.delete(:pool) || 5, timeout: redis_config.delete(:timeout) || 5, } end