Sha256: 0c0ada21ca4394a5e553b77e5aa771a3277c1cc02895854a3371636dec00f8df
Contents?: true
Size: 882 Bytes
Versions: 2
Compression:
Stored size: 882 Bytes
Contents
require 'addressable/uri' module ROM class Adapter include Equalizer.new(:connection) @adapters = [] attr_reader :uri def self.setup(uri_string) uri = Addressable::URI.parse(uri_string) unless adapter = self[uri.scheme] raise ArgumentError, "#{uri_string.inspect} uri is not supported" end adapter.new(uri) end def self.register(adapter) @adapters.unshift adapter end def self.[](scheme) @adapters.detect { |adapter| adapter.schemes.include?(scheme.to_sym) } end def initialize(uri) @uri = uri end def connection raise NotImplementedError, "#{self.class}#connection must be implemented" end def extend_relation_class(klass) klass end def extend_relation_instance(relation) relation end def schema [] end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rom-0.3.1 | lib/rom/adapter.rb |
rom-0.3.0 | lib/rom/adapter.rb |