Class: ActiveRecord::Base
- Inherits:
-
Object
- Object
- ActiveRecord::Base
- Defined in:
- lib/mysql_replication_adapter/ar_base_ext.rb
Class Method Summary collapse
- .calculate(operation, column_name, options = {}) ⇒ Object
-
.find_by_sql(sql, use_slave = false) ⇒ Object
Override find_by_sql so that you can tell it to selectively use a slave machine.
-
.find_every(options) ⇒ Object
Override the standard find to check for the :use_slave option.
-
.mysql_replication_connection(config) ⇒ Object
Establishes a connection to the database that’s used by all Active Record objects.
- .old_calculate ⇒ Object
- .old_find_by_sql ⇒ Object
- .old_find_every ⇒ Object
Class Method Details
.calculate(operation, column_name, options = {}) ⇒ Object
57 58 59 60 61 62 63 64 |
# File 'lib/mysql_replication_adapter/ar_base_ext.rb', line 57 def calculate(operation, column_name, ={}) use_slave = .delete(:use_slave) if use_slave && connection.is_a?(ConnectionAdapters::MysqlReplicationAdapter) connection.load_balance_query {old_calculate(operation, column_name, )} else old_calculate(operation, column_name, ) end end |
.find_by_sql(sql, use_slave = false) ⇒ Object
Override find_by_sql so that you can tell it to selectively use a slave machine
47 48 49 50 51 52 53 |
# File 'lib/mysql_replication_adapter/ar_base_ext.rb', line 47 def find_by_sql(sql, use_slave = false) if use_slave && connection.is_a?(ConnectionAdapters::MysqlReplicationAdapter) connection.load_balance_query {old_find_by_sql sql} else old_find_by_sql sql end end |
.find_every(options) ⇒ Object
Override the standard find to check for the :use_slave option. When specified, the resulting query will be sent to a slave machine.
34 35 36 37 38 39 40 41 42 43 |
# File 'lib/mysql_replication_adapter/ar_base_ext.rb', line 34 def find_every() result = if [:use_slave] && connection.is_a?(ConnectionAdapters::MysqlReplicationAdapter) connection.load_balance_query do old_find_every() end else old_find_every() end result end |
.mysql_replication_connection(config) ⇒ Object
Establishes a connection to the database that’s used by all Active Record objects.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/mysql_replication_adapter/ar_base_ext.rb', line 7 def mysql_replication_connection(config) # :nodoc: config = config.symbolize_keys host = config[:host] port = config[:port] socket = config[:socket] username = config[:username] ? config[:username].to_s : 'root' password = config[:password].to_s if config.has_key?(:database) database = config[:database] else raise ArgumentError, "No database specified. Missing argument: database." end require_mysql mysql = Mysql.init mysql.ssl_set(config[:sslkey], config[:sslcert], config[:sslca], config[:sslcapath], config[:sslcipher]) if config[:sslkey] ConnectionAdapters::MysqlReplicationAdapter.new(mysql, logger, [host, username, password, database, port, socket], config) end |
.old_calculate ⇒ Object
55 |
# File 'lib/mysql_replication_adapter/ar_base_ext.rb', line 55 alias_method :old_calculate, :calculate |
.old_find_by_sql ⇒ Object
45 |
# File 'lib/mysql_replication_adapter/ar_base_ext.rb', line 45 alias_method :old_find_by_sql, :find_by_sql |
.old_find_every ⇒ Object
28 |
# File 'lib/mysql_replication_adapter/ar_base_ext.rb', line 28 alias_method :old_find_every, :find_every |