Class: HeapScope::SidekiqMiddleware
- Inherits:
-
Object
- Object
- HeapScope::SidekiqMiddleware
- Defined in:
- lib/heapscope/sidekiq_middleware.rb
Overview
Optional Sidekiq server middleware. Does not require Sidekiq at load time.
Instance Method Summary collapse
- #call(worker, job, queue) ⇒ Object
-
#initialize(options = {}) ⇒ SidekiqMiddleware
constructor
A new instance of SidekiqMiddleware.
Constructor Details
#initialize(options = {}) ⇒ SidekiqMiddleware
Returns a new instance of SidekiqMiddleware.
6 7 8 9 10 11 |
# File 'lib/heapscope/sidekiq_middleware.rb', line 6 def initialize( = {}) @sample_rate = .fetch(:sample_rate, 0.05) @force_gc = .fetch(:force_gc, false) @mode = .fetch(:mode, :lightweight) @on_report = [:on_report] end |
Instance Method Details
#call(worker, job, queue) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/heapscope/sidekiq_middleware.rb', line 13 def call(worker, job, queue) return yield if @sample_rate <= 0 || rand > @sample_rate result = nil report = HeapScope.measure( force_gc: @force_gc, mode: @mode, metadata: { kind: "sidekiq_job", worker: worker.class.name, queue: queue, jid: job["jid"], pid: Process.pid } ) do result = yield true end @on_report&.call(report) result end |