Class: FiberAudit::Runtime::RailsIntegration::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/fiber_audit/runtime/rails_integration.rb

Overview

Rack middleware for :middleware context

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ Middleware

Returns a new instance of Middleware.



294
295
296
# File 'lib/fiber_audit/runtime/rails_integration.rb', line 294

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
# File 'lib/fiber_audit/runtime/rails_integration.rb', line 298

def call(env)
  integration = RailsIntegration.current
  return @app.call(env) unless integration&.active_for_current_process?

  executed = false
  begin
    integration.context_store.with(:middleware) do
      executed = true
      @app.call(env)
    end
  rescue StandardError
    raise if executed
    # Context setup failed before application code ran
    raise unless integration.send(:fail_open?)

    integration.send(:account_internal_error)
    @app.call(env)
  end
end