def _parse_options(options)
defaults = DEFAULTS.dup
url = options[:url] || ENV["REDIS_URL"]
if url
require "uri"
uri = URI(url)
if uri.scheme == "unix"
defaults[:path] = uri.path
else
raise ArgumentError, "invalid url" unless uri.host
defaults[:scheme] = uri.scheme
defaults[:host] = uri.host
defaults[:port] = uri.port if uri.port
defaults[:password] = uri.password if uri.password
defaults[:db] = uri.path[1..-1].to_i if uri.path
end
end
options = defaults.merge(options)
if options[:path]
options[:scheme] = "unix"
options.delete(:host)
options.delete(:port)
else
options[:host] = options[:host].to_s
options[:port] = options[:port].to_i
end
options[:timeout] = options[:timeout].to_f
options[:db] = options[:db].to_i
options[:driver] = _parse_driver(options[:driver]) || Connection.drivers.last
options
end