Sha256: 46a57bf95c55b8b5dfb091a64148beb3e5c41bc96b3a12f126d14b74af230623

Contents?: true

Size: 1.12 KB

Versions: 1

Compression:

Stored size: 1.12 KB

Contents

require 'prefatory/config'
require 'prefatory/errors'

module Prefatory
  module Storage
    class Discover
      def initialize(config, ttl=Prefatory.config.ttl)
        @config = config
        @ttl = ttl
        @provider = find_provider(config.provider)
      end

      def instance
        require_relative "#{@provider}_provider"
        Object.const_get("Prefatory::Storage::#{@provider.to_s.capitalize}Provider").new(@config.options,
                                                                                         @ttl,
                                                                                         marshaler: marshaler)
      end
      private

      def marshaler
        @config.respond_to?(:marshaler) ? @config.marshaler : Marshal
      end

      def find_provider(provider)
        return provider if provider
        return :redis if defined?(Redis)
        return :memcached if defined?(Dalli)
        raise Errors::Configuration, 'Unable to discover a default storage provider! '\
                                          'You must either have the redis or dalli gem installed.'
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
prefatory-0.1.2 lib/prefatory/storage/discover.rb