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,
}
ACTIVERECORD_CALLBACKS =
Object.new.extend(AfterCommitEverywhere)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#activerecord_model ⇒ Object

Returns the value of attribute activerecord_model.



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

def activerecord_model
  @activerecord_model
end

Class Method Details

.extended(db) ⇒ Object



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

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

#connect ⇒ Object

Ensure Sequel is not creating its own connection anywhere.

Raises:



33
34
35
# File 'lib/sequel/extensions/activerecord_connection.rb', line 33

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.



45
46
47
48
49
# File 'lib/sequel/extensions/activerecord_connection.rb', line 45

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

  activerecord_log(sql) { super }
end

#synchronize ⇒ Object

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



38
39
40
41
42
# File 'lib/sequel/extensions/activerecord_connection.rb', line 38

def synchronize(*)
  activerecord_lock do
    yield activerecord_connection.raw_connection
  end
end

#timezone ⇒ Object

Match database timezone with Active Record.



52
53
54
# File 'lib/sequel/extensions/activerecord_connection.rb', line 52

def timezone
  @timezone || ActiveRecord::Base.default_timezone
end