lib/airbrake/sneakers.rb in airbrake-9.5.5 vs lib/airbrake/sneakers.rb in airbrake-10.0.0
- old
+ new
@@ -30,5 +30,37 @@
end
end
end
Sneakers.error_reporters << Airbrake::Sneakers::ErrorReporter.new
+
+module Sneakers
+ # @todo Migrate to Sneakers v2.12.0 middleware API when it's released
+ # @see https://github.com/jondot/sneakers/pull/364
+ module Worker
+ # Sneakers v2.7.0+ renamed `do_work` to `process_work`.
+ if method_defined?(:process_work)
+ alias process_work_without_airbrake process_work
+ else
+ alias process_work_without_airbrake do_work
+ end
+
+ def process_work(delivery_info, metadata, msg, handler)
+ timing = Airbrake::Benchmark.measure do
+ process_work_without_airbrake(delivery_info, metadata, msg, handler)
+ end
+ rescue Exception => exception # rubocop:disable Lint/RescueException
+ Airbrake.notify_queue(
+ queue: self.class.to_s,
+ error_count: 1,
+ timing: 0.01,
+ )
+ raise exception
+ else
+ Airbrake.notify_queue(
+ queue: self.class.to_s,
+ error_count: 0,
+ timing: timing,
+ )
+ end
+ end
+end