class TieredCaching::SafeConnectionPool

Public Class Methods

new(internal_pool, &recovery_callback) click to toggle source
# File lib/tiered_caching/safe_connection_pool.rb, line 3
def initialize(internal_pool, &recovery_callback)
  @internal_pool = internal_pool
  @recovery_callback = recovery_callback
end

Public Instance Methods

disabled?() click to toggle source
# File lib/tiered_caching/safe_connection_pool.rb, line 16
def disabled?
  !!@disabled
end
enable!() click to toggle source
# File lib/tiered_caching/safe_connection_pool.rb, line 12
def enable!
  @disabled = false
end
with(&block) click to toggle source
# File lib/tiered_caching/safe_connection_pool.rb, line 8
def with(&block)
  @internal_pool.with { |conn| safe_with(conn, &block) }
end

Private Instance Methods

safe_with(conn) { |conn| ... } click to toggle source
# File lib/tiered_caching/safe_connection_pool.rb, line 22
def safe_with(conn)
  return nil if disabled?

  begin
    yield conn
  rescue
    @disabled = true
    @recovery_callback.call(self)
    nil
  end
end