Sha256: 5e22dc7c58833212d36f1983c1e900135840586e3d88ddbbef24f9aae5f833fa
Contents?: true
Size: 1.04 KB
Versions: 1
Compression:
Stored size: 1.04 KB
Contents
module FreshConnection module Extend module Mysql2Adapter RETRY_LIMIT = 3 private_constant :RETRY_LIMIT def self.included(base) base.__send__(:attr_writer, :model_class) end def select_all(arel, name = nil, binds = []) if FreshConnection::AccessControl.slave_access? change_connection do super(arel, "[#{@model_class.slave_group}] #{name}", binds) end else super end end private def change_connection retry_count = 0 master_connection = @connection begin slave_connection = @model_class.slave_connection @connection = slave_connection.raw_connection yield rescue ActiveRecord::StatementInvalid => exception if @model_class.recovery(slave_connection, exception) retry_count += 1 retry if retry_count < RETRY_LIMIT end raise end ensure @connection = master_connection end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fresh_connection-0.3.0 | lib/fresh_connection/extend/mysql2_adapter.rb |