Module: Redcord::RedisConnection::ClassMethods

Extended by:
T::Sig
Defined in:
lib/redcord/redis_connection.rb

Instance Method Summary collapse

Instance Method Details

#connection_configObject



30
31
32
33
# File 'lib/redcord/redis_connection.rb', line 30

def connection_config
  env_config = Redcord::Base.configurations[Rails.env]
  (env_config[name.underscore] || env_config['default']).symbolize_keys
end

#establish_connectionObject



41
42
43
# File 'lib/redcord/redis_connection.rb', line 41

def establish_connection
  Redcord::RedisConnection.connections[name.underscore] = prepare_redis!
end

#prepare_redis!(client = nil) ⇒ Object



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

def prepare_redis!(client = nil)
  return client if client.is_a?(Redcord::Redis) || client.is_a?(Redcord::ConnectionPool)

  options = client.nil? ? connection_config : client.instance_variable_get(:@options)
  client =
    if options[:pool]
      Redcord::ConnectionPool.new(
        pool_size: options[:pool],
        timeout: options[:connection_timeout] || 1.0,
        **options
      )
    else
      Redcord::Redis.new(**options, logger: Redcord::Logger.proxy)
    end

  client.ping
  client
end

#redisObject



36
37
38
# File 'lib/redcord/redis_connection.rb', line 36

def redis
  Redcord::RedisConnection.connections[name.underscore] ||= prepare_redis!
end

#redis=(redis) ⇒ Object



46
47
48
49
# File 'lib/redcord/redis_connection.rb', line 46

def redis=(redis)
  Redcord::RedisConnection.connections[name.underscore] =
    prepare_redis!(redis)
end