class RedisEnvConfig

Constants

CA_FILE_LOCK
VERSION

Public Class Methods

new(env: ENV) click to toggle source
# File lib/redis_env_config.rb, line 8
def initialize(env: ENV)
  @config = {}
  @config[:url] = env["REDIS_URL"] if env["REDIS_URL"]
  @config[:password] = env["REDIS_PASSWORD"] if env["REDIS_PASSWORD"]
  if !@config[:url].nil? and @config[:url].start_with?("rediss:")
    @config[:ssl_params] = Hash.new.tap do |x|
      cert = env["REDIS_CERT"] or raise Error, "missing environment variable REDIS_CERT"
      x[:cert] = OpenSSL::X509::Certificate.new(cert)
      key = env["REDIS_KEY"] or raise Error, "missing environment variable REDIS_KEY"
      x[:key] = OpenSSL::PKey::RSA.new(key)
      x[:ca_file] = env["REDIS_CA_FILE"] or raise Error, "missing environment variable REDIS_CA_FILE"
      @ca = env["REDIS_CA"] if env["REDIS_CA"]
    end
    assure_redis_ca_file
  end
end

Public Instance Methods

to_h() click to toggle source
# File lib/redis_env_config.rb, line 25
def to_h
  @config.dup
end

Private Instance Methods

assure_redis_ca_file() click to toggle source
# File lib/redis_env_config.rb, line 31
def assure_redis_ca_file
  CA_FILE_LOCK.synchronize do
    if @ca and !File.exist?(@config[:ssl_params][:ca_file])
      File.open(@config[:ssl_params][:ca_file], "w") { |io| io.write(@ca) }
    end
  end
end