class Honeybadger::ContextManager
@api private
Attributes
Public Class Methods
Source
# File lib/honeybadger/context_manager.rb, line 8 def self.current Thread.current[:__hb_context_manager] ||= new end
Source
# File lib/honeybadger/context_manager.rb, line 12 def initialize @mutex = Mutex.new _initialize end
Public Instance Methods
Source
# File lib/honeybadger/context_manager.rb, line 56 def clear_context @mutex.synchronize do @global_context = nil @local_context = nil end end
Source
# File lib/honeybadger/context_manager.rb, line 95 def clear_event_context @mutex.synchronize do @global_event_context = nil @local_event_context = nil end end
Source
# File lib/honeybadger/context_manager.rb, line 48 def get_context @mutex.synchronize do return @global_context unless @local_context @global_context.merge(@local_context.inject({}, :merge)) end end
Source
# File lib/honeybadger/context_manager.rb, line 87 def get_event_context @mutex.synchronize do return @global_event_context unless @local_event_context @global_event_context.merge(@local_event_context.inject({}, :merge)) end end
Source
# File lib/honeybadger/context_manager.rb, line 106 def get_rack_env @mutex.synchronize { @rack_env } end
Source
# File lib/honeybadger/context_manager.rb, line 114 def get_request_id @mutex.synchronize { @request_id } end
Source
# File lib/honeybadger/context_manager.rb, line 24 def set_context(hash, &block) local = block_given? @mutex.synchronize do @global_context ||= {} @local_context ||= [] new_context = Context(hash) if local @local_context << new_context else @global_context.update(new_context) end end if local begin yield ensure @mutex.synchronize { @local_context&.pop } end end end
Internal helpers
Source
# File lib/honeybadger/context_manager.rb, line 63 def set_event_context(hash, &block) local = block_given? @mutex.synchronize do @global_event_context ||= {} @local_event_context ||= [] new_context = Context(hash) if local @local_event_context << new_context else @global_event_context.update(new_context) end end if local begin yield ensure @mutex.synchronize { @local_event_context&.pop } end end end
Source
# File lib/honeybadger/context_manager.rb, line 102 def set_rack_env(env) @mutex.synchronize { @rack_env = env } end
Source
# File lib/honeybadger/context_manager.rb, line 110 def set_request_id(request_id) @mutex.synchronize { @request_id = request_id } end
Private Instance Methods
Source
# File lib/honeybadger/context_manager.rb, line 122 def _initialize @mutex.synchronize do @global_context = nil @local_context = nil @global_event_context = nil @local_event_context = nil @rack_env = nil @request_id = nil end end