module HireFire::Macro::Delayed::Job
Public Instance Methods
Calculates the maximum job queue latency using Delayed::Job
. If no queues are specified, it measures latency across all available queues. This method supports both ActiveRecord and Mongoid mappers.
@param queues [Array<String, Symbol>] (optional) Names of the queues for latency
measurement. If not provided, latency is measured across all queues.
@return [Float] Maximum job queue latency in seconds. @example Calculate latency across all queues
HireFire::Macro::Delayed::Job.job_queue_latency
@example Calculate latency for the “default” queue
HireFire::Macro::Delayed::Job.job_queue_latency(:default)
@example Calculate latency across “default” and “mailer” queues
HireFire::Macro::Delayed::Job.job_queue_latency(:default, :mailer)
# File lib/hirefire/macro/delayed_job.rb, line 28 def job_queue_latency(*queues) queues = normalize_queues(queues, allow_empty: true) query = ::Delayed::Job .where(run_at: ..Time.now) .where(failed_at: nil) .order(run_at: :asc) if queues.any? case mapper when :active_record query = query.where(queue: queues) when :mongoid query = query.in(queue: queues.to_a) end end if (job = query.first) Time.now - job.run_at else 0.0 end end
Calculates the total job queue size using Delayed::Job
. If no queues are specified, it measures size across all available queues. This method supports both ActiveRecord and Mongoid mappers.
@param queues [Array<String, Symbol>] (optional) Names of the queues for size measurement.
If not provided, size is measured across all queues.
@return [Integer] Total job queue size. @example Calculate size across all queues
HireFire::Macro::Delayed::Job.job_queue_size
@example Calculate size of the “default” queue
HireFire::Macro::Delayed::Job.job_queue_size(:default)
@example Calculate size across “default” and “mailer” queues
HireFire::Macro::Delayed::Job.job_queue_size(:default, :mailer)
# File lib/hirefire/macro/delayed_job.rb, line 66 def job_queue_size(*queues) queues = normalize_queues(queues, allow_empty: true) query = ::Delayed::Job .where(run_at: ..Time.now) .where(failed_at: nil) if queues.any? case mapper when :active_record query = query.where(queue: queues) when :mongoid query = query.in(queue: queues.to_a) end end query.count end
Private Instance Methods
# File lib/hirefire/macro/delayed_job.rb, line 88 def mapper return :active_record if defined?(::ActiveRecord::Base) && ::Delayed::Job.ancestors.include?(::ActiveRecord::Base) return :mongoid if defined?(::Mongoid::Document) && ::Delayed::Job.ancestors.include?(::Mongoid::Document) raise MapperNotDetectedError, "Unable to detect the appropriate mapper." end