Module: HeapScope::Fibers
- Defined in:
- lib/heapscope/closures.rb
Overview
Fiber / execution-context awareness (best-effort).
Class Method Summary collapse
Class Method Details
.fiber_info(fiber) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/heapscope/closures.rb', line 84 def fiber_info(fiber) storage = if fiber.respond_to?(:storage) fiber.storage else {} end { object_id: fiber.__id__, alive: (fiber.alive? if fiber.respond_to?(:alive?)), storage_keys: storage.respond_to?(:keys) ? storage.keys.map(&:inspect) : [], storage_size: storage.respond_to?(:size) ? storage.size : nil, note: "Fiber-local storage support varies by Ruby version." } rescue StandardError => e { error: e. } end |
.inventory ⇒ Object
70 71 72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/heapscope/closures.rb', line 70 def inventory list = [] if defined?(Fiber) && Fiber.respond_to?(:list) Fiber.list.each do |fiber| list << fiber_info(fiber) end elsif defined?(Fiber) list << fiber_info(Fiber.current) end list rescue StandardError => e [{ error: e. }] end |