class RedisClient::URLConfig

Attributes

uri[R]
url[R]

Public Class Methods

new(url) click to toggle source
# File lib/redis_client/url_config.rb, line 9
def initialize(url)
  @url = url
  @uri = URI(url)
  @unix = false
  @ssl = false
  case uri.scheme
  when "redis"
    # expected
  when "rediss"
    @ssl = true
  when "unix", nil
    @unix = true
  else
    raise ArgumentError, "Unknown URL scheme: #{url.inspect}"
  end
end

Public Instance Methods

db() click to toggle source
# File lib/redis_client/url_config.rb, line 30
def db
  unless @unix
    db_path = uri.path&.delete_prefix("/")
    return Integer(db_path) if db_path && !db_path.empty?
  end

  unless uri.query.nil? || uri.query.empty?
    _, db_query = URI.decode_www_form(uri.query).find do |key, _|
      key == "db"
    end
    return Integer(db_query) if db_query && !db_query.empty?
  end
end
host() click to toggle source
# File lib/redis_client/url_config.rb, line 56
def host
  return if uri.host.nil? || uri.host.empty?

  uri.host.sub(/\A\[(.*)\]\z/, '\1')
end
password() click to toggle source
# File lib/redis_client/url_config.rb, line 48
def password
  if uri.user && !uri.password
    URI.decode_www_form_component(uri.user)
  elsif uri.user && uri.password
    URI.decode_www_form_component(uri.password)
  end
end
path() click to toggle source
# File lib/redis_client/url_config.rb, line 62
def path
  if @unix
    File.join(*[uri.host, uri.path].compact)
  end
end
port() click to toggle source
# File lib/redis_client/url_config.rb, line 68
def port
  return unless uri.port

  Integer(uri.port)
end
ssl?() click to toggle source
# File lib/redis_client/url_config.rb, line 26
def ssl?
  @ssl
end
username() click to toggle source
# File lib/redis_client/url_config.rb, line 44
def username
  uri.user if uri.password && !uri.user.empty?
end