lib/raven/integrations/sidekiq.rb in sentry-raven-0.15.2 vs lib/raven/integrations/sidekiq.rb in sentry-raven-0.15.3

- old
+ new

@@ -21,8 +21,35 @@ chain.add ::Raven::Sidekiq end end else Sidekiq.configure_server do |config| - config.error_handlers << Proc.new {|ex,context| Raven.capture_exception(ex, :extra => {:sidekiq => context}) } + config.error_handlers << Proc.new do |ex, context| + Raven.capture_exception(ex, :extra => { + :sidekiq => filter_context(context) + }) + end end +end + +def filter_context(context) + case context + when Array + context.map { |arg| filter_context(arg) } + when Hash + Hash[context.map { |key, value| filter_context_hash(key, value) }] + else + context + end +end + +def filter_context_hash(key, value) + # Strip any `_aj` prefixes from keys. + # These keys come from an internal serialized object from ActiveJob. + # Internally, there are a subset of keys that ActiveJob references, but + # these are declared as private, and I don't think it's wise + # to keep chasing what this list is. But they all use a common prefix, so + # we want to strip this becuase ActiveJob will complain. + # e.g.: _aj_globalid -> _globalid + (key = key[3..-1]) if key [0..3] == "_aj_" + [key, filter_context(value)] end