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