class GraphQL::PersistedQueries::StoreAdapters::RedisClientBuilder

Builds Redis object instance based on passed hash

Constants

DEFAULT_REDIS_DB

Public Class Methods

new(redis_url: nil, redis_host: nil, redis_port: nil, redis_db_name: nil) click to toggle source
# 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

Public Instance Methods

build() click to toggle source
# 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

Private Instance Methods

build_redis_url() click to toggle source
# File lib/graphql/persisted_queries/store_adapters/redis_client_builder.rb, line 34
def build_redis_url
  db_name = @redis_db_name || DEFAULT_REDIS_DB
  base_url = ENV["REDIS_URL"] || "redis://#{@redis_host}:#{@redis_port}"
  URI.join(base_url, db_name).to_s
end