class Eql::AdapterFactory

AdapterFactory class detects adapters and their helpers

Constants

HELPERS_MODULE_NAME

@return [Symbol]

Public Class Methods

adapter_helpers(adapter) click to toggle source

Get adapter's helper modules

@param [Eql::Adapters::Base] adapter

@return [Array<Module>]

# File lib/eql/adapter_factory.rb, line 36
def adapter_helpers(adapter)
  adapter.class.ancestors.each_with_object([]) do |klass, ret|
    next unless klass.is_a?(Class)
    next unless klass.const_defined?(HELPERS_MODULE_NAME)
    ret.unshift klass.const_get(HELPERS_MODULE_NAME)
  end
end
adapters() click to toggle source

Registered adapters

@return [Hash{Symbol => Eql::Adapters::Base}]

# File lib/eql/adapter_factory.rb, line 15
def adapters
  @adapters ||= {}
end
factory(conn) click to toggle source

Detect adapter class

@raise [RuntimeError] when can't find adapter's class

@param [Object, nil] conn DB connection or a cursor

@return [Eql::Adapters::Base]

# File lib/eql/adapter_factory.rb, line 53
def factory(conn)
  return Eql.config.default_adapter unless conn
  adapter = adapters.values.find do |a|
    a.match?(conn) if a.is_a?(Class) && a.respond_to?(:match?)
  end
  raise "Unable to detect adapter for #{conn.inspect}" unless adapter
  adapter
end
register_adapter(key, klass) click to toggle source

Register a new adapter

@param [Symbol] key adapter's key @param [Eql::Adapters::Base] klass adapter's class

# File lib/eql/adapter_factory.rb, line 25
def register_adapter(key, klass)
  adapters[key] = klass
end