Sha256: 33886ac47e7eba3fa2de1cfa53040669d8d88869df53b16d7c83d77fe2ddf6d3

Contents?: true

Size: 1.16 KB

Versions: 6

Compression:

Stored size: 1.16 KB

Contents

# frozen_string_literal: true

require 'rails_web_cache/engine'
require 'rails_web_cache/base'
require 'rails_web_cache/entry'
require 'rails_web_cache/file_store'
require 'rails_web_cache/memory_store'
require 'rails_web_cache/redis_cache_store'

module RailsWebCache
  class << self
    def cache
      @cache ||= driver(Rails.cache)
    end

    private

    def driver(cache)
      if redis_cache_store?(cache)
        RedisCacheStore.new(cache)
      elsif memory_store?(cache)
        MemoryStore.new(cache)
      elsif file_store?(cache)
        FileStore.new(cache)
      else
        raise ArgumentError, "RailsWebCache doesn't support #{cache.class}"
      end
    end

    def redis_cache_store?(driver)
      !!defined?(::Redis) &&
        !!defined?(::ActiveSupport::Cache::RedisCacheStore) &&
        driver.is_a?(::ActiveSupport::Cache::RedisCacheStore)
    end

    def memory_store?(driver)
      !!defined?(::ActiveSupport::Cache::MemoryStore) &&
        driver.is_a?(::ActiveSupport::Cache::MemoryStore)
    end

    def file_store?(driver)
      !!defined?(::ActiveSupport::Cache::FileStore) &&
        driver.is_a?(::ActiveSupport::Cache::FileStore)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rails_web_cache-0.7.6 lib/rails_web_cache.rb
rails_web_cache-0.7.5 lib/rails_web_cache.rb
rails_web_cache-0.7.4 lib/rails_web_cache.rb
rails_web_cache-0.7.3 lib/rails_web_cache.rb
rails_web_cache-0.7.2 lib/rails_web_cache.rb
rails_web_cache-0.7.0 lib/rails_web_cache.rb