Sha256: b998cc0793e0f4116f96e6418c0bd461777d676bf3a70f5515feb14ab15f6135
Contents?: true
Size: 1.08 KB
Versions: 2
Compression:
Stored size: 1.08 KB
Contents
module ActiveRecord module ConnectionAdapters class AbstractAdapter def select_all_with_slave_connection(arel, name = nil, binds = []) if FreshConnection::SlaveConnection.slave_access? change_connection {select_all_without_slave_connection(arel, "[slave] #{name}", binds)} else select_all_without_slave_connection(arel, name, binds) end end alias_method_chain :select_all, :slave_connection private def change_connection retry_count = 0 master_connection = @connection begin slave_connection = FreshConnection::SlaveConnection.slave_connection @connection = slave_connection.raw_connection yield rescue ActiveRecord::StatementInvalid => exception if FreshConnection::SlaveConnection.recovery(slave_connection, exception) retry_count += 1 retry if retry_count < FreshConnection::SlaveConnection.retry_limit end raise end ensure @connection = master_connection end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
fresh_connection-0.1.8 | lib/fresh_connection/active_record/abstract_adapter.rb |
fresh_connection-0.1.7 | lib/fresh_connection/active_record/abstract_adapter.rb |