Sha256: bb5dc1f79e9f50f2f735e0206aad7b5daa460b8d3e376b43745b6789c3cea4b9

Contents?: true

Size: 1018 Bytes

Versions: 6

Compression:

Stored size: 1018 Bytes

Contents

module Ezlog
  module Sidekiq
    class JobContext
      class << self
        def from_job_hash(job_hash)
          basic_info_from(job_hash).merge named_arguments_from(job_hash)
        end

        private

        def basic_info_from(job)
          {
            jid: job['jid'],
            queue: job['queue'],
            worker: job_class(job),
            created_at: job['created_at'],
            enqueued_at: job['enqueued_at'],
            run_count: (job['retry_count'] || -1) + 2
          }
        end

        def named_arguments_from(job)
          {}.tap do |arguments|
            method_parameters_of(job).each_with_index do |(_, param_name), index|
              arguments[param_name] = job['args'][index]
            end
          end
        end

        def method_parameters_of(job)
          Kernel.const_get(job_class(job).to_sym).instance_method(:perform).parameters
        end

        def job_class(job)
          job['wrapped'] || job['class']
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
ezlog-0.7.0 lib/ezlog/sidekiq/job_context.rb
ezlog-0.6.0 lib/ezlog/sidekiq/job_context.rb
ezlog-0.5.3 lib/ezlog/sidekiq/job_context.rb
ezlog-0.5.2 lib/ezlog/sidekiq/job_context.rb
ezlog-0.5.1 lib/ezlog/sidekiq/job_context.rb
ezlog-0.5.0 lib/ezlog/sidekiq/job_context.rb