Module: Adapter

Extended by:
Adapter, Asserts
Included in:
Adapter
Defined in:
lib/adapter.rb,
lib/adapter/memory.rb,
lib/adapter/asserts.rb,
lib/adapter/version.rb,
lib/adapter/defaults.rb,
lib/adapter/exceptions.rb

Defined Under Namespace

Modules: Asserts, Defaults, Memory Classes: Error, IncompleteAPI, LockTimeout, Undefined

Constant Summary collapse

VERSION =
'0.7.1'

Constants included from Asserts

Asserts::RequiredMethods

Instance Method Summary collapse

Methods included from Asserts

assert_methods_defined, assert_valid_adapter, assert_valid_module

Instance Method Details

#[](name) ⇒ Object



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

def [](name)
  assert_valid_adapter(name)
  adapters[name.to_sym] ||= get_adapter_instance(name)
end

#adaptersObject

Memoizes adapter instances based on their definitions



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

def adapters
  @adapters ||= {}
end

#define(name, mod = nil, &block) ⇒ Object



14
15
16
17
18
19
20
21
22
# File 'lib/adapter.rb', line 14

def define(name, mod=nil, &block)
  definition_module = Module.new
  definition_module.send(:include, Defaults)
  definition_module.send(:include, mod) unless mod.nil?
  definition_module.send(:include, Module.new(&block)) if block_given?
  assert_valid_module(definition_module)
  adapters.delete(name.to_sym)
  definitions[name.to_sym] = definition_module
end

#definitionsObject

Stores the definitions for each adapter by name



10
11
12
# File 'lib/adapter.rb', line 10

def definitions
  @definitions ||= {}
end