Module: Sequel::ActiveRecordConnection

Defined in:
lib/sequel/extensions/activerecord_connection.rb,
lib/sequel/extensions/activerecord_connection/jdbc.rb,
lib/sequel/extensions/activerecord_connection/utils.rb,
lib/sequel/extensions/activerecord_connection/mysql2.rb,
lib/sequel/extensions/activerecord_connection/oracle.rb,
lib/sequel/extensions/activerecord_connection/sqlite.rb,
lib/sequel/extensions/activerecord_connection/tinytds.rb,
lib/sequel/extensions/activerecord_connection/postgres.rb

Defined Under Namespace

Modules: Jdbc, Mysql2, Oracle, Postgres, Sqlite, Tinytds, Utils

Constant Summary collapse

Error =
Class.new(Sequel::Error)
TRANSACTION_ISOLATION_MAP =
{
  uncommitted:  :read_uncommitted,
  committed:    :read_committed,
  repeatable:   :repeatable_read,
  serializable: :serializable,
}

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#activerecord_modelObject

Returns the value of attribute activerecord_model.



28
29
30
# File 'lib/sequel/extensions/activerecord_connection.rb', line 28

def activerecord_model
  @activerecord_model
end

Class Method Details

.extended(db) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/sequel/extensions/activerecord_connection.rb', line 16

def self.extended(db)
  db.activerecord_model = ActiveRecord::Base
  db.opts[:test] = false unless db.opts.key?(:test)

  begin
    require "sequel/extensions/activerecord_connection/#{db.adapter_scheme}"
    db.extend Sequel::ActiveRecordConnection.const_get(db.adapter_scheme.capitalize)
  rescue LoadError
    # assume the Sequel adapter already works with Active Record
  end
end

Instance Method Details

#connectObject

Ensure Sequel is not creating its own connection anywhere.

Raises:



31
32
33
# File 'lib/sequel/extensions/activerecord_connection.rb', line 31

def connect(*)
  raise Error, "creating a Sequel connection is not allowed"
end

#log_connection_yield(sql, conn, args = nil) ⇒ Object

Log executed queries into Active Record logger as well.



49
50
51
52
53
# File 'lib/sequel/extensions/activerecord_connection.rb', line 49

def log_connection_yield(sql, conn, args = nil)
  sql += "; #{args.inspect}" if args

  activerecord_log(sql) { super }
end

#synchronizeObject

Avoid calling Sequel’s connection pool, instead use Active Record’s.



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/sequel/extensions/activerecord_connection.rb', line 36

def synchronize(*)
  activerecord_lock do
    conn = activerecord_connection.raw_connection

    if activerecord_connection_class && !conn.is_a?(activerecord_connection_class)
      fail Error, "expected Active Record connection to be a #{activerecord_connection_class}, got #{conn.class}"
    end

    yield conn
  end
end

#timezoneObject

Match database timezone with Active Record.



56
57
58
# File 'lib/sequel/extensions/activerecord_connection.rb', line 56

def timezone
  @timezone || activerecord_timezone
end