class Mnemosyne::Middleware::Rack::Proxy

Public Class Methods

new(body, trace) click to toggle source
# File lib/mnemosyne/middleware/rack.rb, line 7
def initialize(body, trace)
  @body = body
  @trace = trace
  @closed = false
end

Public Instance Methods

close() click to toggle source
# File lib/mnemosyne/middleware/rack.rb, line 24
def close
  return if @closed

  @closed = true

  begin
    @body.close if @body.respond_to? :close
  ensure
    _submit_trace
  end
end
closed?() click to toggle source
# File lib/mnemosyne/middleware/rack.rb, line 36
def closed?
  @closed
end
each(*args, &block) click to toggle source
# File lib/mnemosyne/middleware/rack.rb, line 40
def each(*args, &block)
  @body.each(*args, &block)
rescue StandardError, LoadError, SyntaxError => e
  @trace.attach_error(e)
  raise
end
method_missing(*args, &block) click to toggle source
Calls superclass method
# File lib/mnemosyne/middleware/rack.rb, line 19
def method_missing(*args, &block)
  super if args.first && args.first.to_s == 'to_ary'
  @body.__send__(*args, &block)
end
respond_to_missing?(*args) click to toggle source
# File lib/mnemosyne/middleware/rack.rb, line 13
def respond_to_missing?(*args)
  return false if args.first && args.first.to_s == 'to_ary'

  @body.respond_to?(*args)
end

Private Instance Methods

_submit_trace() click to toggle source
# File lib/mnemosyne/middleware/rack.rb, line 49
def _submit_trace
  @trace.submit
rescue Exception => e # rubocop:disable Lint/RescueException
  ::Mnemosyne::Logging.logger.error \
    "Error while submitting trace: #{e}\n  #{e.backtrace.join("\n  ")}"
end