Class: Alf::Sequel::Adapter

Inherits:
Adapter
  • Object
show all
Defined in:
lib/alf/sequel/adapter.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.looks_a_sqlite_file?(f) ⇒ Boolean

Returns true if ‘f` looks like a sqlite file

Returns:

  • (Boolean)


24
25
26
27
28
# File 'lib/alf/sequel/adapter.rb', line 24

def looks_a_sqlite_file?(f)
  return false unless Path.like?(f)
  path = Path(f)
  path.parent.directory? and ['db', 'sqlite', 'sqlite3'].include?(path.ext)
end

.recognizes?(conn_spec) ⇒ Boolean

Returns:

  • (Boolean)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/alf/sequel/adapter.rb', line 7

def recognizes?(conn_spec)
  case conn_spec
  when ::Sequel::Database
    true
  when String
    require 'uri'
    uri = URI::parse(conn_spec) rescue nil
    (uri && uri.scheme) or looks_a_sqlite_file?(conn_spec)
  when Hash
    conn_spec = Tools.symbolize_keys(conn_spec)
    conn_spec[:adapter] && conn_spec[:database]
  else
    looks_a_sqlite_file?(conn_spec)
  end
end

.sequel_db(conn_spec) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/alf/sequel/adapter.rb', line 34

def sequel_db(conn_spec)
  require 'sequel' unless defined?(::Sequel)
  case conn_spec
  when ::Sequel::Database
    conn_spec
  when String, Path
    conn_spec = "#{sqlite_protocol}://#{conn_spec}" if looks_a_sqlite_file?(conn_spec)
    ::Sequel.connect(conn_spec)
  else
    raise ArgumentError, "Unrecognized connection specification `#{conn_spec.inspect}`"
  end
end

.sqlite_protocolObject



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

def sqlite_protocol
  defined?(JRUBY_VERSION) ? "jdbc:sqlite" : "sqlite"
end

Instance Method Details

#connectionObject

Returns a low-level connection on this adapter



50
51
52
# File 'lib/alf/sequel/adapter.rb', line 50

def connection
  Connection.new(conn_spec)
end