lib/raygun/sidekiq.rb in raygun4ruby-3.2.6 vs lib/raygun/sidekiq.rb in raygun4ruby-4.0.0.pre
- old
+ new
@@ -1,71 +1,51 @@
-# Adapted from Bugsnag code as per Sidekiq 2.x comment request
-#
-# SideKiq 2.x: https://github.com/mperham/sidekiq/blob/2-x/lib/sidekiq/exception_handler.rb
-# Bugsnag: https://github.com/bugsnag/bugsnag-ruby/blob/master/lib/bugsnag/sidekiq.rb
-
-module Raygun
-
- class SidekiqMiddleware # Used for Sidekiq 2.x only
- def call(worker, message, queue)
- begin
- yield
- rescue Exception => ex
- raise ex if [Interrupt, SystemExit, SignalException].include?(ex.class)
- SidekiqReporter.call(ex, worker: worker, message: message, queue: queue)
- raise ex
- end
- end
- end
-
- class SidekiqReporter
- def self.call(exception, context_hash)
- user = affected_user(context_hash)
- data = {
- custom_data: {
- sidekiq_context: context_hash
- },
- tags: ['sidekiq']
- }
- if correlation_id = exception.instance_variable_get(:@__raygun_correlation_id)
- data.merge!(correlation_id: correlation_id)
- end
- ::Raygun.track_exception(
- exception,
- data,
- user
- )
- end
-
- # Extracts affected user information out of a Sidekiq worker class
- def self.affected_user(context_hash)
- job = context_hash[:job]
-
- return if job.nil? || job['class'].nil? || !Module.const_defined?(job['class'])
-
- worker_class = Module.const_get(job['class'])
- affected_user_method = Raygun.configuration.affected_user_method
-
- return if worker_class.nil? || !worker_class.respond_to?(affected_user_method)
-
- worker_class.send(affected_user_method, job['args'])
- rescue => e
- return unless Raygun.configuration.failsafe_logger
-
- failsafe_log("Problem in sidekiq affected user tracking: #{e.class}: #{e.message}\n\n#{e.backtrace.join("\n")}")
-
- nil
- end
- end
-end
-
-if Sidekiq::VERSION < '3'
- Sidekiq.configure_server do |config|
- config.server_middleware do |chain|
- chain.add Raygun::SidekiqMiddleware
- end
- end
-else
- Sidekiq.configure_server do |config|
- config.error_handlers << Raygun::SidekiqReporter
- end
-end
+# Adapted from Bugsnag code, and Sidekiq Erorr Handling instructions
+#
+# SideKiq: https://github.com/sidekiq/sidekiq/wiki/Error-Handling
+# Bugsnag: https://github.com/bugsnag/bugsnag-ruby/blob/master/lib/bugsnag/sidekiq.rb
+
+module Raygun
+
+ class SidekiqReporter
+ def self.call(exception, context_hash, config)
+ user = affected_user(context_hash)
+ data = {
+ custom_data: {
+ sidekiq_context: context_hash
+ },
+ tags: ['sidekiq']
+ }
+ if exception.instance_variable_defined?(:@__raygun_correlation_id) && correlation_id = exception.instance_variable_get(:@__raygun_correlation_id)
+ data.merge!(correlation_id: correlation_id)
+ end
+ ::Raygun.track_exception(
+ exception,
+ data,
+ user
+ )
+ end
+
+ # Extracts affected user information out of a Sidekiq worker class
+ def self.affected_user(context_hash)
+ job = context_hash[:job]
+
+ return if job.nil? || job['class'].nil? || !Module.const_defined?(job['class'])
+
+ worker_class = Module.const_get(job['class'])
+ affected_user_method = Raygun.configuration.affected_user_method
+
+ return if worker_class.nil? || !worker_class.respond_to?(affected_user_method)
+
+ worker_class.send(affected_user_method, job['args'])
+ rescue => e
+ return unless Raygun.configuration.failsafe_logger
+
+ failsafe_log("Problem in sidekiq affected user tracking: #{e.class}: #{e.message}\n\n#{e.backtrace.join("\n")}")
+
+ nil
+ end
+ end
+end
+
+Sidekiq.configure_server do |config|
+ config.error_handlers << Raygun::SidekiqReporter
+end