module Sidekiq::WorkerStats::Web
Public Class Methods
registered(app)
click to toggle source
# File lib/sidekiq/worker_stats/web.rb, line 8 def self.registered(app) view_path = File.join(File.expand_path('..', __FILE__), 'views') app.get '/worker_stats' do @page = params["page"].to_i || 1 @page = @page >= 1 ? @page - 1 : 0 @per_page = params["per_page"].to_i || 10 @per_page = @per_page >= 1 ? @per_page : 10 @workers_stats = {} Sidekiq.redis do |redis| keys = redis.hkeys REDIS_HASH keys.each do |key| worker_stats = redis.hget(REDIS_HASH, key) @workers_stats[key] = JSON.parse(worker_stats) if worker_stats != nil end end @workers_stats = @workers_stats.sort_by { |k, v| ::Time.at(v["start"]) }.reverse @stats_length = @workers_stats.length @max_pages = (@stats_length / @per_page) - (@stats_length % @per_page == 0 ? 1 : 0) @page = @page * @per_page < @workers_stats.length ? @page : @max_pages down_limit = @page * @per_page up_limit = ((@page + 1) * @per_page) - 1 @workers_stats = @workers_stats[down_limit..up_limit] || @workers_stats[0..@per_page-1] render(:erb, File.read(File.join(view_path, 'worker_stats.erb'))) end app.get '/worker_stats/:key' do @key = params[:key] @worker = {} Sidekiq.redis do |redis| @worker = JSON.parse(redis.hget(REDIS_HASH, @key)) end render(:erb, File.read(File.join(view_path, 'worker_stats_single.erb'))) end end