forked from tmm1/em-mysql
/
em_mysqlplus_adapter.rb
52 lines (42 loc) · 1.6 KB
/
em_mysqlplus_adapter.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
gem 'activerecord', '>= 2.3.4'
require 'activerecord'
require 'active_record/connection_adapters/mysql_adapter'
require 'em-synchrony'
module ActiveRecord
module ConnectionAdapters
class EmMysqlAdapter < MysqlAdapter
def initialize(connection, logger, host_parameters, connection_parameters, config)
@hostname = host_parameters[0]
@port = host_parameters[1]
@connect_parameters, @config = connection_parameters, config
super(connection, logger, nil, config)
end
def connect
@connection = EventMachine::MySQL.new({
:host => @hostname,
:port => @port,
:database => @config[:database],
:password => @config[:password],
:socket => @config[:socket]
})
configure_connection
@connection
end
end
end
class Base
def self.em_mysqlplus_connection(config) # :nodoc:
config = config.symbolize_keys
host = config[:host]
port = config[:port]
username = config[:username].to_s if config[:username]
password = config[:password].to_s if config[:password]
if config.has_key?(:database)
database = config[:database]
else
raise ArgumentError, "No database specified. Missing argument: database."
end
ConnectionAdapters::EmMysqlAdapter.new(nil, logger, [host, port], [database, username, password], config)
end
end
end