module Pact module Consumer class MockService class ErrorHandler def initialize app, logger @app = app @logger = logger end def call env begin @app.call(env) rescue Pact::Error => e @logger.error e.message [500, {'Content-Type' => 'application/json'}, [{message: e.message}.to_json]] rescue StandardError => e message = "Error ocurred in mock service: #{e.class} - #{e.message}" @logger.error message @logger.error e.backtrace.join("\n") [500, {'Content-Type' => 'application/json'}, [{message: message, backtrace: e.backtrace}.to_json]] end end def shutdown @app.shutdown end end end end end