Sha256: 193ac14bb8d1f00426b8c26f6af19db00133a42d41194216040e6cee1dfb67b4
Contents?: true
Size: 1.08 KB
Versions: 7
Compression:
Stored size: 1.08 KB
Contents
require 'fresh_connection/access_control' module FreshConnection module Extend module Mysql2Adapter RETRY_LIMIT = 3 private_constant :RETRY_LIMIT def self.prepended(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
7 entries across 7 versions & 1 rubygems