def annotate_exception(exc, options = {})
      notes = (exc.instance_variable_defined?(:@__raven_context) && exc.instance_variable_get(:@__raven_context)) || {}
      Raven::Utils::DeepMergeHash.deep_merge!(notes, options)
      exc.instance_variable_set(:@__raven_context, notes)
      exc
    end
def annotate_exception(exc, options = {})
      notes = (exc.instance_variable_defined?(:@__raven_context) && exc.instance_variable_get(:@__raven_context)) || {}
      Raven::Utils::DeepMergeHash.deep_merge!(notes, options)
      exc.instance_variable_set(:@__raven_context, notes)
      exc
    end
Provides extra context to the exception prior to it being handled by
 Raven. An exception can have multiple annotations, which are merged
 together.

 The options (annotation) is treated the same as the ``options``
 parameter to ``capture_exception`` or ``Event.from_exception``, and
 can contain the same ``:user``, ``:tags``, etc. options as these
 methods.

 These will be merged with the ``options`` parameter to
 ``Event.from_exception`` at the top of execution.

 @example
   begin
     raise "Hello"
   rescue => exc
     Raven.annotate_exception(exc, :user => { 'id' => 1,
                              'email' => 'foo@example.com' })
   end