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, &block) ⇒ 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) {|notification| ... } ⇒ Object
Explicitly notify of an exception.
-
.notify_or_ignore(exception, overrides = nil, request_data = nil) {|notification| ... } ⇒ 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
127 128 129 |
# File 'lib/bugsnag.rb', line 127 def after_notify_callbacks Bugsnag.configuration.request_data[:after_callbacks] ||= [] end |
.auto_notify(exception, overrides = nil, request_data = nil, &block) ⇒ 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
82 83 84 85 86 |
# File 'lib/bugsnag.rb', line 82 def auto_notify(exception, overrides=nil, request_data=nil, &block) overrides ||= {} overrides.merge!({:severity => "error"}) notify_or_ignore(exception, overrides, request_data, &block) if configuration.auto_notify end |
.before_notify_callbacks ⇒ Object
Allow access to “before notify” callbacks
122 123 124 |
# File 'lib/bugsnag.rb', line 122 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
117 118 119 |
# File 'lib/bugsnag.rb', line 117 def clear_request_data Bugsnag.configuration.clear_request_data end |
.configuration ⇒ Object
Configuration getters
104 105 106 107 |
# File 'lib/bugsnag.rb', line 104 def configuration @configuration = nil unless defined?(@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 52 53 |
# 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 @logged_ready = false unless defined?(@logged_ready) if configuration.api_key && !@logged_ready log "Bugsnag exception handler #{VERSION} ready" @logged_ready = true end end |
.debug(message) ⇒ Object
Debug logger
99 100 101 |
# File 'lib/bugsnag.rb', line 99 def debug() configuration.logger.info("#{LOG_PREFIX}#{}") if configuration.debug end |
.log(message) ⇒ Object
Log wrapper
89 90 91 |
# File 'lib/bugsnag.rb', line 89 def log() configuration.logger.info("#{LOG_PREFIX}#{}") end |
.notify(exception, overrides = nil, request_data = nil) {|notification| ... } ⇒ Object
Explicitly notify of an exception
56 57 58 59 60 61 62 63 |
# File 'lib/bugsnag.rb', line 56 def notify(exception, overrides=nil, request_data=nil, &block) notification = Notification.new(exception, configuration, overrides, request_data) yield(notification) if block_given? notification.deliver notification end |
.notify_or_ignore(exception, overrides = nil, request_data = nil) {|notification| ... } ⇒ Object
Notify of an exception unless it should be ignored
66 67 68 69 70 71 72 73 74 75 76 77 |
# File 'lib/bugsnag.rb', line 66 def notify_or_ignore(exception, overrides=nil, request_data=nil, &block) notification = Notification.new(exception, configuration, overrides, request_data) yield(notification) if block_given? 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
110 111 112 |
# File 'lib/bugsnag.rb', line 110 def set_request_data(key, value) Bugsnag.configuration.set_request_data(key, value) end |
.warn(message) ⇒ Object
Warning logger
94 95 96 |
# File 'lib/bugsnag.rb', line 94 def warn() configuration.logger.warn("#{LOG_PREFIX}#{}") end |