class RailsFailover::ActiveRecord::Interceptor

Public Class Methods

adapter_errors() click to toggle source
# File lib/rails_failover/active_record/middleware.rb, line 6
def self.adapter_errors
  @adapter_errors ||= begin
    if defined?(::PG)
      [::PG::UnableToSend, ::PG::ConnectionBad]
    elsif defined?(::Mysql2)
      [::Mysql2::Error::ConnectionError]
    end
  end
end
handle(request, exception) click to toggle source
# File lib/rails_failover/active_record/middleware.rb, line 16
def self.handle(request, exception)
  verify_primary(
    exception,
    request.env[Middleware::WRITING_ROLE_HEADER]
  )
end
resolve_cause(exception) click to toggle source
# File lib/rails_failover/active_record/middleware.rb, line 31
def self.resolve_cause(exception)
  if exception.cause
    resolve_cause(exception.cause)
  else
    exception
  end
end
verify_primary(exception, writing_role) click to toggle source
# File lib/rails_failover/active_record/middleware.rb, line 23
def self.verify_primary(exception, writing_role)
  exception = resolve_cause(exception)

  if adapter_errors.any? { |error| exception.is_a?(error) }
    Handler.instance.verify_primary(writing_role)
  end
end