Sha256: debc1a2bbd46f1d496f8c56bf0313883fc8b25be0cb6f907fce29f83e6c7b073

Contents?: true

Size: 1.18 KB

Versions: 8

Compression:

Stored size: 1.18 KB

Contents

# Encoding: utf-8

require 'metriks'

module Qless
  module Middleware
    module Metriks

      # Tracks the time jobs take, grouping the timings by the job class.
      module TimeJobsByClass
        def around_perform(job)
          ::Metriks.timer("qless.job-times.#{job.klass_name}").time do
            super
          end
        end
      end

      # Increments a counter each time an instance of a particular job class
      # completes.
      #
      # Usage:
      #
      # Qless::Worker.class_eval do
      #   include Qless::Middleware::CountEvents.new(
      #     SomeJobClass => "event_name",
      #     SomeOtherJobClass => "some_other_event"
      #   )
      # end
      class CountEvents < Module
        def initialize(class_to_event_map)
          module_eval do # eval the block within the module instance
            define_method :around_perform do |job|
              super(job)
              return unless job.state == 'complete'
              return unless event_name = class_to_event_map[job.klass]

              counter = ::Metriks.counter("qless.job-events.#{event_name}")
              counter.increment
            end
          end
        end
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
qless-0.12.0 lib/qless/middleware/metriks.rb
qless-0.11.0 lib/qless/middleware/metriks.rb
qless-0.10.5 lib/qless/middleware/metriks.rb
qless-0.10.4 lib/qless/middleware/metriks.rb
qless-0.10.3 lib/qless/middleware/metriks.rb
qless-0.10.2 lib/qless/middleware/metriks.rb
qless-0.10.1 lib/qless/middleware/metriks.rb
qless-0.10.0 lib/qless/middleware/metriks.rb