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