# frozen_string_literal: true require 'redis_web_manager/engine' require 'redis_web_manager/base' require 'redis_web_manager/action' require 'redis_web_manager/connection' require 'redis_web_manager/info' require 'redis_web_manager/data' require 'active_support/time' require 'redis' module RedisWebManager mattr_accessor :redises, default: { default: Redis.new } mattr_accessor :lifespan, default: 15.days mattr_accessor :authenticate, default: nil class << self def configure yield self if block_given? check_attrs end private def check_attrs unless redises.is_a?(::Hash) raise(ArgumentError, 'Invalid redises hash, use like that { test: Redis.new }') end redises.each do |k, v| unless v.is_a?(Redis) raise(ArgumentError, "Invalid Redis instance for #{k}, use like that Redis.new") end end unless lifespan.is_a?(::ActiveSupport::Duration) raise(ArgumentError, 'Invalid lifespan, use like that 15.days, 15.minutes etc') end valid = lifespan.to_i.positive? raise(ArgumentError, 'Invalid lifespan, value must be greater than 0') unless valid end end end