Class: GraphQL::PersistedQueries::StoreAdapters::RedisClientBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/graphql/persisted_queries/store_adapters/redis_client_builder.rb

Overview

Builds Redis object instance based on passed hash

Instance Method Summary collapse

Constructor Details

#initialize(redis_url: nil, redis_host: nil, redis_port: nil, redis_db_name: nil) ⇒ RedisClientBuilder

Returns a new instance of RedisClientBuilder.



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/graphql/persisted_queries/store_adapters/redis_client_builder.rb', line 8

def initialize(redis_url: nil, redis_host: nil, redis_port: nil, redis_db_name: nil)
  require "redis"

  @redis_url = redis_url
  @redis_host = redis_host
  @redis_port = redis_port
  @redis_db_name = redis_db_name
rescue LoadError => e
  msg = "Could not load the 'redis' gem, please add it to your gemfile or " \
        "configure a different adapter, e.g. use GraphQL::PersistedQueries, store: :memory"
  raise e.class, msg, e.backtrace
end

Instance Method Details

#buildObject



21
22
23
24
25
26
27
28
# File 'lib/graphql/persisted_queries/store_adapters/redis_client_builder.rb', line 21

def build
  if @redis_url && (@redis_host || @redis_port || @redis_db_name)
    raise ArgumentError, "redis_url cannot be passed along with redis_host, redis_port " \
                         "or redis_db_name options"
  end

  ::Redis.new(url: @redis_url || build_redis_url)
end