dmagliola/redis_fixtures

View on GitHub
lib/redis_fixtures/connection.rb

Summary

Maintainability
A
55 mins
Test Coverage
module RedisFixtures
  # Gets a connection to Redis using whatever method was configured,
  # and yields it to the block passed in
  # @return [Object] Whatever your block returned
  def self.with_redis_connection
    result = nil
    conf = RedisFixtures.configuration
    if conf.connection_pool.present?
      conf.connection_pool.with do |redis|
        result = yield(redis)
      end
    elsif conf.connection.present?
      result = yield(conf.connection)
    elsif conf.connection_proc.present? || conf.connection_settings.present?
      redis = conf.connection_proc.present? ?
                conf.connection_proc.call :
                Redis.new(conf.connection_settings)
      result = yield(redis)
      redis.disconnect! if redis.respond_to?(:disconnect!)
    end
    result
  end
end