Class: Alf::Sequel::Adapter
- Inherits:
-
Adapter
- Object
- Adapter
- Alf::Sequel::Adapter
- Defined in:
- lib/alf/sequel/adapter.rb
Class Method Summary collapse
-
.looks_a_sqlite_file?(f) ⇒ Boolean
Returns true if ‘f` looks like a sqlite file.
- .recognizes?(conn_spec) ⇒ Boolean
- .sequel_db(conn_spec) ⇒ Object
- .sqlite_protocol ⇒ Object
Instance Method Summary collapse
-
#connection ⇒ Object
Returns a low-level connection on this adapter.
Class Method Details
.looks_a_sqlite_file?(f) ⇒ Boolean
Returns true if ‘f` looks like a sqlite file
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
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_protocol ⇒ Object
30 31 32 |
# File 'lib/alf/sequel/adapter.rb', line 30 def sqlite_protocol defined?(JRUBY_VERSION) ? "jdbc:sqlite" : "sqlite" end |
Instance Method Details
#connection ⇒ Object
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 |