Module: AsyncStorage

Defined in:
lib/async_storage/circuit_breaker.rb,
lib/async_storage.rb,
lib/async_storage/json.rb,
lib/async_storage/repo.rb,
lib/async_storage/config.rb,
lib/async_storage/naming.rb,
lib/async_storage/version.rb,
lib/async_storage/allocator.rb,
lib/async_storage/redis_pool.rb,
lib/async_storage/bath_actions.rb,
lib/async_storage/util/strings.rb

Overview

frizen_string_literal: true

Defined Under Namespace

Modules: JSON, Util Classes: Allocator, CircuitBreaker, Config, Error, InvalidConfig, Naming, RedisPool, Repo

Constant Summary collapse

VERSION =
'0.0.4'

Class Method Summary collapse

Class Method Details

.[](klass, **options) ⇒ Object



16
17
18
# File 'lib/async_storage.rb', line 16

def [](klass, **options)
  Repo.new(klass, **options)
end

.configObject



20
21
22
# File 'lib/async_storage.rb', line 20

def config
  @config ||= Config.new
end

.configure(&block) ⇒ Object



24
25
26
27
28
29
30
# File 'lib/async_storage.rb', line 24

def configure(&block)
  return unless block_given?

  config.instance_eval(&block)
  @redis_pool = nil
  config
end

.flush_allObject



6
7
8
9
10
# File 'lib/async_storage/bath_actions.rb', line 6

def flush_all
  keys.inject(0) do |total, (key, cli)|
    total + cli.del(key)
  end
end

.keysObject



12
13
14
15
16
17
18
# File 'lib/async_storage/bath_actions.rb', line 12

def keys
  Enumerator.new do |yielder|
    redis_pool.with do |cli|
      cli.keys("#{config.namespace}:*").each { |key| yielder.yield(key, cli) }
    end
  end
end

.redis_poolObject



32
33
34
# File 'lib/async_storage.rb', line 32

def redis_pool
  @redis_pool ||= RedisPool.new(config.redis)
end