Module: Sidekiq::QueueMetrics::WebExtension

Defined in:
lib/sidekiq_queue_metrics/web_extension.rb

Class Method Summary collapse

Class Method Details

.registered(app) ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/sidekiq_queue_metrics/web_extension.rb', line 3

def self.registered(app)
  view_path = File.join(File.expand_path("..", __FILE__), "views")

  app.get "/queue_metrics" do
    queue_metrics = Sidekiq::QueueMetrics.fetch
    @@last_metrics ||= queue_metrics

    @queue_metrics = queue_metrics.each_with_object({}) do |queue_metric, new_queue_metrics|
      queue, metric = queue_metric
      new_queue_metrics[queue] = metric.each_with_object({}) do |current_metric, updated_metrics|
        name, count = current_metric
        updated_metrics[name] = {'count' => count, 'animate' => @@last_metrics[queue][name] != count}
      end
    end

    @@last_metrics = queue_metrics
    render(:erb, File.read(File.join(view_path, "queues_stats.erb")))
  end

  app.get '/queue_metrics/queues/:queue/summary' do
    @queue = route_params[:queue]
    @queue_stats = Sidekiq::QueueMetrics.fetch[@queue]
    @failed_jobs = Sidekiq::QueueMetrics.failed_jobs(@queue)
    render(:erb, File.read(File.join(view_path, "queue_summary.erb")))
  end

  app.get '/queue_metrics/queues/:queue/jobs/:jid' do
    queue = route_params[:queue]
    jid = route_params[:jid]
    failed_jobs = Sidekiq::QueueMetrics.failed_jobs(queue)
    @job = failed_jobs.find {|job| job['jid'] == jid}
    render(:erb, File.read(File.join(view_path, "failed_job.erb")))
  end
end