Module: Modis

Defined in:
lib/modis.rb,
lib/modis/index.rb,
lib/modis/model.rb,
lib/modis/errors.rb,
lib/modis/finder.rb,
lib/modis/version.rb,
lib/modis/attribute.rb,
lib/modis/deprecator.rb,
lib/modis/persistence.rb,
lib/modis/transaction.rb,
lib/modis/configuration.rb

Defined Under Namespace

Modules: Attribute, Errors, Finder, Index, Model, Persistence, Transaction Classes: AttributeCoercionError, AttributeError, Configuration, IndexError, ModisError, RecordInvalid, RecordNotFound, RecordNotSaved, UnsupportedAttributeType

Constant Summary collapse

VERSION =
'4.3.2'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.connection_pool_sizeObject



54
55
56
# File 'lib/modis.rb', line 54

def connection_pool_size
  @connection_pool_size ||= 5
end

.connection_pool_timeoutObject



58
59
60
# File 'lib/modis.rb', line 58

def connection_pool_timeout
  @connection_pool_timeout ||= 5
end

.connection_poolsObject



62
63
64
# File 'lib/modis.rb', line 62

def connection_pools
  @connection_pools ||= {}
end

Class Method Details

.configObject



12
13
14
# File 'lib/modis/configuration.rb', line 12

def config
  @config ||= Configuration.new
end

.configure {|config| ... } ⇒ Object

Yields:



4
5
6
# File 'lib/modis/configuration.rb', line 4

def self.configure
  yield config
end

.connection_pool(pool_name = :default) ⇒ Object



66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/modis.rb', line 66

def connection_pool(pool_name = :default)
  connection_pools[pool_name] ||= begin
    mutex.synchronize do
      ConnectionPool.new(
        size: connection_pool_size,
        timeout: connection_pool_timeout
      ) do
        Redis.new(redis_options[pool_name])
      end
    end
  end
end

.deprecatorObject



4
5
6
# File 'lib/modis/deprecator.rb', line 4

def self.deprecator
  @deprecator ||= ActiveSupport::Deprecation.new('5.0', 'modis')
end

.mutexObject



25
26
27
# File 'lib/modis.rb', line 25

def mutex
  @mutex ||= Mutex.new
end

.redis_optionsObject



29
30
31
# File 'lib/modis.rb', line 29

def redis_options
  @redis_options ||= { default: {} }
end

.redis_options=(options) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/modis.rb', line 33

def redis_options=(options)
  if options.is_a?(Hash) && options.values.first.is_a?(Hash)
    @redis_options = options.transform_values(&:dup)
  else
    redis_options[:default] = options
  end
end

.reset!Object



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/modis.rb', line 41

def reset!
  connection_pools.each do |key, _|
    with_connection(key) do |connection|
      keys = connection.keys "#{config.namespace}:*"
      connection.del(*keys) unless keys.empty?
    end
  end
  instance_variables.each do |var|
    instance_variable_set(var, nil)
    remove_instance_variable(var)
  end
end

.with_connection(pool_name = :default) ⇒ Object



79
80
81
# File 'lib/modis.rb', line 79

def with_connection(pool_name = :default)
  connection_pool(pool_name).with { |connection| yield(connection) }
end