class Airbrake::Rails::Event
Event
is a wrapper around ActiveSupport::Notifications::Event.
@since v9.0.3 @api private
Constants
- HTML_RESPONSE_WILDCARD
- MILLISECOND
@return [Integer]
Public Class Methods
new(*args)
click to toggle source
# File lib/airbrake/rails/event.rb, line 18 def initialize(*args) @event = ActiveSupport::Notifications::Event.new(*args) @rails_7_or_greater = ::Rails::VERSION::MAJOR >= 7 end
Public Instance Methods
db_runtime()
click to toggle source
# File lib/airbrake/rails/event.rb, line 40 def db_runtime @db_runtime ||= @event.payload[:db_runtime] || 0 end
duration()
click to toggle source
# File lib/airbrake/rails/event.rb, line 88 def duration @event.duration end
groups()
click to toggle source
# File lib/airbrake/rails/event.rb, line 60 def groups groups = {} groups[:db] = db_runtime if db_runtime > 0 groups[:view] = view_runtime if view_runtime > 0 groups end
method()
click to toggle source
# File lib/airbrake/rails/event.rb, line 23 def method @event.payload[:method] end
params()
click to toggle source
# File lib/airbrake/rails/event.rb, line 32 def params @event.payload[:params] end
response_type()
click to toggle source
# File lib/airbrake/rails/event.rb, line 27 def response_type response_type = @event.payload[:format] response_type == HTML_RESPONSE_WILDCARD ? :html : response_type end
sql()
click to toggle source
# File lib/airbrake/rails/event.rb, line 36 def sql @event.payload[:sql] end
status_code()
click to toggle source
# File lib/airbrake/rails/event.rb, line 67 def status_code return @event.payload[:status] if @event.payload[:status] if @event.payload[:exception] status = ActionDispatch::ExceptionWrapper.status_code_for_exception( @event.payload[:exception].first, ) status = 500 if status == 0 return status end # The ActiveSupport event doesn't have status only in two cases: # - an exception was thrown # - unauthorized access # We have already handled the exception so what's left is unauthorized # access. There's no way to know for sure it's unauthorized access, so # we are rather optimistic here. 401 end
time()
click to toggle source
# File lib/airbrake/rails/event.rb, line 48 def time # On RailsĀ 7+ `ActiveSupport::Notifications::Event#time` returns an # instance of Float. It represents monotonic time in milliseconds. # Airbrake Ruby expects that the provided time is in seconds. Hence, # we need to convert it from milliseconds to seconds. In the # versions below Rails 7, time is an instance of Time. # # Relevant commit: # https://github.com/rails/rails/commit/81d0dc90becfe0b8e7f7f26beb66c25d84b8ec7f @rails_7_or_greater ? @event.time / MILLISECOND : @event.time end
view_runtime()
click to toggle source
# File lib/airbrake/rails/event.rb, line 44 def view_runtime @view_runtime ||= @event.payload[:view_runtime] || 0 end