Sha256: 5fa50ed0733c1b7b6af984d6d5009ce6560bff618a472c884ab0e4d0c394d3c6

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

require 'jobs_dashboard/storage'
module JobsDashboard
  class ServerMiddleware

    include JobsDashboard::Storage

    # Options can be send in sidekiq.rb initializer
    # @param [Hash] opts middleware initialization options
    # @option opts
    def initialize(opts = {})
    end

    # Uses sidekiq's internal jid as id
    # Store worker status in DB
    # @param [Worker] worker worker instance
    # @param [Array] msg job args, should have jid format
    # @param [String] queue name
    def call(worker, msg, queue)
      # Determine the actual job class
      # Bypass if attributes skip is set
      if get_jobs_dashboard_options(worker)[:skip]
        yield
        return
      end

      update_job_status worker.jid, 'working'
      yield
      update_job_status worker.jid, 'complete'
    #rescue Worker::Stopped
    # update_job_status worker.jid, 'stopped'
    rescue SystemExit, Interrupt
      update_job_status worker.jid, 'interrupted'
      raise
    rescue Exception => e
      status = :failed
      update_job_status worker.jid, 'failed'
      store_for_id(worker.jid, {
        error_message: e.message,
        backtrace: e.backtrace
      })
      raise
    end

    private
      def get_jobs_dashboard_options(worker)
        worker.class.get_sidekiq_options['jobs_dashboard'] || {}
      end

  end

  # Helper method to easily configure sidekiq-status server middleware
  # whatever the Sidekiq version is.
  # @param [Sidekiq] sidekiq_config the Sidekiq config
  # @param [Hash] server_middleware_options server middleware initialization options
  # @option server_middleware_options
  def self.configure_server_middleware(sidekiq_config, server_middleware_options = {})
    sidekiq_config.server_middleware do |chain|
      chain.add JobsDashboard::ServerMiddleware, server_middleware_options
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
jobs_dashboard-0.3.4 lib/jobs_dashboard/server_middleware.rb