Sha256: 4127d87b87d242cd152a4af4a3edfd4ba48b091bec2f9d6ecb95860285c9178b

Contents?: true

Size: 1.93 KB

Versions: 3

Compression:

Stored size: 1.93 KB

Contents

module Sidekiq
  module Monitor
    class JobsDatatable < AjaxDatatablesRails
      include ActionView::Helpers::DateHelper

      def initialize(view)
        @model_name = Sidekiq::Monitor::Job
        @columns = [
          'sidekiq_jobs.jid',
          'sidekiq_jobs.queue',
          'sidekiq_jobs.class_name',
          'sidekiq_jobs.name',
          'sidekiq_jobs.enqueued_at',
          'sidekiq_jobs.started_at',
          'COALESCE(sidekiq_jobs.finished_at, NOW()) - sidekiq_jobs.started_at',
          'sidekiq_jobs.status',
          'sidekiq_jobs.result',
          'sidekiq_jobs.args'
        ]
        @searchable_columns = [
          'sidekiq_jobs.jid',
          'sidekiq_jobs.queue',
          'sidekiq_jobs.class_name',
          'sidekiq_jobs.args',
          'sidekiq_jobs.status',
          'sidekiq_jobs.name'
        ]
        super(view)
      end
      
      private

      def data
        jobs.map do |job|
          [
            job.jid,
            job.queue,
            job.class_name,
            job.name || job.args.to_s,
            job.enqueued_at,
            job.started_at,
            get_duration(job),
            job.result.blank? ? nil : job.result[:message],
            job.status,
            job.result,
            job.args
          ]
        end
      end

      def jobs
        @jobs ||= fetch_records
      end

      def get_raw_records
        records = Sidekiq::Monitor::Job
        records = records.where(queue: params[:queue]) unless params[:queue].blank?
        records
      end

      def get_duration(job)
        if job.started_at
          to_time = job.finished_at ? job.finished_at : Time.now
          return simplified_distance_of_time_in_words(job.started_at, to_time)
        end
        nil
      end

      def simplified_distance_of_time_in_words(from_time, to_time)
        distance_of_time_in_words(from_time, to_time, true).gsub('less than ', '').gsub('about ', '')
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sidekiq_monitor-0.0.3 app/datatables/sidekiq/monitor/jobs_datatable.rb
sidekiq_monitor-0.0.2 app/datatables/sidekiq/monitor/jobs_datatable.rb
sidekiq_monitor-0.0.1 app/datatables/sidekiq/monitor/jobs_datatable.rb