Class: ActiveSupport::Notifications::Event
Relationships & Source Files | |
Inherits: | Object |
Defined in: | activesupport/lib/active_support/notifications/instrumenter.rb |
Class Method Summary
Instance Attribute Summary
- #name readonly
- #payload rw
- #transaction_id readonly
Instance Method Summary
- #allocations
- #cpu_time
-
#duration
Returns the difference in milliseconds between when the execution of the event started and when it ended.
- #end
-
#finish!
Record information at the time this event finishes.
- #idle_time
-
#start!
Record information at the time this event starts.
- #time
- #now private
-
#now_allocations
private
Likely on JRuby, TruffleRuby.
- #children Internal use only
- #parent_of?(event) ⇒ Boolean Internal use only
- #record Internal use only
Constructor Details
.new(name, start, ending, transaction_id, payload) ⇒ Event
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 110
def initialize(name, start, ending, transaction_id, payload) @name = name @payload = payload.dup @time = start ? start.to_f * 1_000.0 : start @transaction_id = transaction_id @end = ending ? ending.to_f * 1_000.0 : ending @cpu_time_start = 0.0 @cpu_time_finish = 0.0 @allocation_count_start = 0 @allocation_count_finish = 0 end
Instance Attribute Details
#name (readonly)
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 107
attr_reader :name, :transaction_id
#payload (rw)
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 108
attr_accessor :payload
#transaction_id (readonly)
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 107
attr_reader :name, :transaction_id
Instance Method Details
#allocations
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 172
def allocations @allocation_count_finish - @allocation_count_start end
#children
This method is for internal use only.
[ GitHub ]
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 176
def children # :nodoc: ActiveSupport.deprecator.warn <<~EOM ActiveSupport::Notifications::Event#children is deprecated and will be removed in Rails 7.2. EOM [] end
#cpu_time
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 159
def cpu_time @cpu_time_finish - @cpu_time_start end
#duration
Returns the difference in milliseconds between when the execution of the event started and when it ended.
ActiveSupport::Notifications.subscribe('wait') do |*args|
@event = ActiveSupport::Notifications::Event.new(*args)
end
ActiveSupport::Notifications.instrument('wait') do
sleep 1
end
@event.duration # => 1000.138
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 205
def duration @end - @time end
#end
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 126
def end @end / 1000.0 if @end end
#finish!
Record information at the time this event finishes
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 151
def finish! @cpu_time_finish = now_cpu @end = now @allocation_count_finish = now_allocations end
#idle_time
#now (private)
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 210
def now Process.clock_gettime(Process::CLOCK_MONOTONIC, :float_millisecond) end
#now_allocations (private)
Likely on JRuby, TruffleRuby
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 231
def now_allocations GC.stat(:total_allocated_objects) end
#parent_of?(event) ⇒ Boolean
This method is for internal use only.
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 184
def parent_of?(event) # :nodoc: ActiveSupport.deprecator.warn <<~EOM ActiveSupport::Notifications::Event#parent_of? is deprecated and will be removed in Rails 7.2. EOM start = (time - event.time) * 1000 start <= 0 && (start + duration >= event.duration) end
#record
This method is for internal use only.
[ GitHub ]
#start!
Record information at the time this event starts
# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 144
def start! @time = now @cpu_time_start = now_cpu @allocation_count_start = now_allocations end
#time
[ GitHub ]# File 'activesupport/lib/active_support/notifications/instrumenter.rb', line 122
def time @time / 1000.0 if @time end