Sha256: 7d8651b481a84a6a3bc05b6455316d378ba85aaf0605f2bd6370685ffcb00884

Contents?: true

Size: 875 Bytes

Versions: 1

Compression:

Stored size: 875 Bytes

Contents

# frozen_string_literal: true
require "uri"

class Twelvefactor::Environment::Cache::Redis
  def self.apply app, cache_url
    config = app.config

    config.cache_store = [
      :redis_store,
      cache_base_url(cache_url).to_s,
      options(cache_url.query)
    ]
  end

  def self.cache_base_url url
    base = url.dup
    base.query = nil
    base
  end

  def self.options query
    normalize_types raw_options query
  end

  def self.normalize_types options
    normalized = {}

    if options.key? :expires_in
      normalized[:expires_in] = options[:expires_in].to_i
    end

    if options.key? :compress
      normalized[:compress] = options[:compress] == "true"
    end

    options.merge normalized
  end

  def self.raw_options query
    return {} unless query

    CGI
      .parse(query)
      .map { |k, val| [k.to_sym, val.first] }
      .to_h
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
twelvefactor-cache-1.0.3 lib/twelvefactor/environment/cache/redis.rb