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 |