Class: ActiveRecord::ConnectionAdapters::NeverBlockMysqlAdapter

Inherits:
MysqlAdapter
  • Object
show all
Defined in:
lib/active_record/connection_adapters/neverblock_mysql_adapter.rb

Instance Method Summary collapse

Instance Method Details

#adapter_nameObject

Returns ‘NeverBlockMySQL’ as adapter name for identification purposes



9
10
11
# File 'lib/active_record/connection_adapters/neverblock_mysql_adapter.rb', line 9

def adapter_name
  'NeverBlockMySQL'
end

#begin_db_transactionObject



27
28
29
# File 'lib/active_record/connection_adapters/neverblock_mysql_adapter.rb', line 27

def begin_db_transaction
  @connection.begin_db_transaction
end

#commit_db_transactionObject



31
32
33
# File 'lib/active_record/connection_adapters/neverblock_mysql_adapter.rb', line 31

def commit_db_transaction
  @connection.commit_db_transaction
end

#connectObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/active_record/connection_adapters/neverblock_mysql_adapter.rb', line 39

def connect
  @connection = ::NB::DB::PooledDBConnection.new(@connection_options.shift) do
    conn = ::NB::DB::FMysql.init
    encoding = @config[:encoding]
    if encoding
      conn.options(::NB::DB::FMysql::SET_CHARSET_NAME, encoding) rescue nil
    end
    conn.ssl_set(@config[:sslkey], @config[:sslcert], @config[:sslca], @config[:sslcapath], @config[:sslcipher]) if @config[:sslkey]
    conn.real_connect(*@connection_options)
    NB.neverblock(false) do
      conn.query("SET NAMES '#{encoding}'") if encoding
      # By default, MySQL 'where id is null' selects the last inserted id.
      # Turn this off. http://dev.rubyonrails.org/ticket/6778
      conn.query("SET SQL_AUTO_IS_NULL=0")
    end
    conn.register_with_event_loop(:em)
    conn          
  end
end

#insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) ⇒ Object

:nodoc:



13
14
15
16
17
18
# File 'lib/active_record/connection_adapters/neverblock_mysql_adapter.rb', line 13

def insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) #:nodoc:
  begin_db_transaction
  super sql, name
  id_value || @connection.insert_id
  commit_db_transaction
end

#rollback_db_transactionObject



35
36
37
# File 'lib/active_record/connection_adapters/neverblock_mysql_adapter.rb', line 35

def rollback_db_transaction
  @connection.rollback_db_transaction
end

#update_sql(sql, name = nil) ⇒ Object

:nodoc:



20
21
22
23
24
25
# File 'lib/active_record/connection_adapters/neverblock_mysql_adapter.rb', line 20

def update_sql(sql, name = nil) #:nodoc:
  begin_db_transaction
  super
  @connection.affected_rows
  commit_db_transaction
end