Module: Bugsnag
- Defined in:
- lib/bugsnag.rb,
lib/bugsnag/rack.rb,
lib/bugsnag/rails.rb,
lib/bugsnag/deploy.rb,
lib/bugsnag/resque.rb,
lib/bugsnag/cleaner.rb,
lib/bugsnag/helpers.rb,
lib/bugsnag/mailman.rb,
lib/bugsnag/railtie.rb,
lib/bugsnag/sidekiq.rb,
lib/bugsnag/version.rb,
lib/bugsnag/delivery.rb,
lib/bugsnag/meta_data.rb,
lib/bugsnag/capistrano2.rb,
lib/bugsnag/delay/resque.rb,
lib/bugsnag/notification.rb,
lib/bugsnag/configuration.rb,
lib/bugsnag/middleware_stack.rb,
lib/bugsnag/delivery/synchronous.rb,
lib/bugsnag/delivery/thread_queue.rb
Defined Under Namespace
Modules: Capistrano, Delay, Delivery, Helpers, MetaData, Middleware, Rails Classes: Cleaner, Configuration, Deploy, Mailman, MiddlewareStack, Notification, Rack, Railtie, Resque, Sidekiq
Constant Summary collapse
- LOG_PREFIX =
"** [Bugsnag] "
- LOCK =
Mutex.new
- VERSION =
File.read(File.join(File.dirname(__FILE__), "../../VERSION")).strip
Class Method Summary collapse
-
.after_notify_callbacks ⇒ Object
Allow access to “after notify” callbacks.
-
.auto_notify(exception, overrides = nil, request_data = nil) ⇒ Object
Auto notify of an exception, called from rails and rack exception rescuers, unless auto notification is disabled, or we should ignore this error class.
-
.before_notify_callbacks ⇒ Object
Allow access to “before notify” callbacks.
-
.clear_request_data ⇒ Object
Clear all “per-request” data, temporal data for use in bugsnag middleware This method should be called after each distinct request or session ends Eg.
-
.configuration ⇒ Object
Configuration getters.
-
.configure(config_hash = nil) {|configuration| ... } ⇒ Object
Configure the Bugsnag notifier application-wide settings.
-
.debug(message) ⇒ Object
Debug logger.
-
.log(message) ⇒ Object
Log wrapper.
-
.notify(exception, overrides = nil, request_data = nil) ⇒ Object
Explicitly notify of an exception.
-
.notify_or_ignore(exception, overrides = nil, request_data = nil) ⇒ Object
Notify of an exception unless it should be ignored.
-
.set_request_data(key, value) ⇒ Object
Set “per-request” data, temporal data for use in bugsnag middleware.
-
.warn(message) ⇒ Object
Warning logger.
Class Method Details
.after_notify_callbacks ⇒ Object
Allow access to “after notify” callbacks
119 120 121 |
# File 'lib/bugsnag.rb', line 119 def after_notify_callbacks Bugsnag.configuration.request_data[:after_callbacks] ||= [] end |
.auto_notify(exception, overrides = nil, request_data = nil) ⇒ Object
Auto notify of an exception, called from rails and rack exception rescuers, unless auto notification is disabled, or we should ignore this error class
75 76 77 78 79 |
# File 'lib/bugsnag.rb', line 75 def auto_notify(exception, overrides=nil, request_data=nil) overrides ||= {} overrides.merge!({:severity => "error"}) notify_or_ignore(exception, overrides, request_data) if configuration.auto_notify end |
.before_notify_callbacks ⇒ Object
Allow access to “before notify” callbacks
114 115 116 |
# File 'lib/bugsnag.rb', line 114 def before_notify_callbacks Bugsnag.configuration.request_data[:before_callbacks] ||= [] end |
.clear_request_data ⇒ Object
Clear all “per-request” data, temporal data for use in bugsnag middleware This method should be called after each distinct request or session ends Eg. After completing a page request in a web app
109 110 111 |
# File 'lib/bugsnag.rb', line 109 def clear_request_data Bugsnag.configuration.clear_request_data end |
.configuration ⇒ Object
Configuration getters
97 98 99 |
# File 'lib/bugsnag.rb', line 97 def configuration @configuration || LOCK.synchronize { @configuration ||= Bugsnag::Configuration.new } end |
.configure(config_hash = nil) {|configuration| ... } ⇒ Object
Configure the Bugsnag notifier application-wide settings.
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/bugsnag.rb', line 34 def configure(config_hash=nil) if config_hash config_hash.each do |k,v| configuration.send("#{k}=", v) rescue nil if configuration.respond_to?("#{k}=") end end yield(configuration) if block_given? # Use resque for asynchronous notification if required require "bugsnag/delay/resque" if configuration.delay_with_resque && defined?(Resque) # Log that we are ready to rock if configuration.api_key && !@logged_ready log "Bugsnag exception handler #{VERSION} ready, api_key=#{configuration.api_key}" @logged_ready = true end end |
.debug(message) ⇒ Object
Debug logger
92 93 94 |
# File 'lib/bugsnag.rb', line 92 def debug() configuration.logger.info("#{LOG_PREFIX}#{message}") if configuration.debug end |
.log(message) ⇒ Object
Log wrapper
82 83 84 |
# File 'lib/bugsnag.rb', line 82 def log() configuration.logger.info("#{LOG_PREFIX}#{message}") end |
.notify(exception, overrides = nil, request_data = nil) ⇒ Object
Explicitly notify of an exception
54 55 56 57 58 |
# File 'lib/bugsnag.rb', line 54 def notify(exception, overrides=nil, request_data=nil) notification = Notification.new(exception, configuration, overrides, request_data) notification.deliver notification end |
.notify_or_ignore(exception, overrides = nil, request_data = nil) ⇒ Object
Notify of an exception unless it should be ignored
61 62 63 64 65 66 67 68 69 70 |
# File 'lib/bugsnag.rb', line 61 def notify_or_ignore(exception, overrides=nil, request_data=nil) notification = Notification.new(exception, configuration, overrides, request_data) unless notification.ignore? notification.deliver notification else false end end |
.set_request_data(key, value) ⇒ Object
Set “per-request” data, temporal data for use in bugsnag middleware
102 103 104 |
# File 'lib/bugsnag.rb', line 102 def set_request_data(key, value) Bugsnag.configuration.set_request_data(key, value) end |
.warn(message) ⇒ Object
Warning logger
87 88 89 |
# File 'lib/bugsnag.rb', line 87 def warn() configuration.logger.warn("#{LOG_PREFIX}#{message}") end |