| 
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 | # File 'lib/bearcat/redis_connection.rb', line 18
def create(options = {})
  symbolized_options = options.transform_keys(&:to_sym)
  if !symbolized_options[:url] && (u = determine_redis_provider(prefix: options[:env_prefix]))
    symbolized_options[:url] = u
  end
  size = if symbolized_options[:size]
    symbolized_options[:size]
  elsif symbolized_options[:env_prefix] && (v = ENV["#{symbolized_options[:env_prefix]}_REDIS_POOL_SIZE"])
    Integer(v)
  elsif ENV["RAILS_MAX_THREADS"]
    Integer(ENV["RAILS_MAX_THREADS"])
  else
    5
  end
  pool_timeout = symbolized_options[:pool_timeout] || 1
  ConnectionPool.new(timeout: pool_timeout, size: size) do
    namespace = symbolized_options[:namespace]
    client = Redis.new client_opts(symbolized_options)
    if namespace
      begin
        require "redis/namespace"
        Redis::Namespace.new(namespace, redis: client)
      rescue LoadError
        Rails.logger.error("Your Redis configuration uses the namespace '#{namespace}' but the redis-namespace gem is not included in the Gemfile." \
                             "Add the gem to your Gemfile to continue using a namespace. Otherwise, remove the namespace parameter.")
        exit(-127)
      end
    else
      client
    end
  end
end |