Sha256: a526a68ae5419792b0ecd57a93eac222f0e642161596c906a19dd218152d6b2a

Contents?: true

Size: 994 Bytes

Versions: 7

Compression:

Stored size: 994 Bytes

Contents

module Rollbar
  module Delayed
    class JobData
      attr_reader :job

      def initialize(job)
        @job = job
      end

      def to_hash
        job_data = extract_job_data

        handler_parent = job_data['job'] ? job_data['job'] : job_data
        handler_parent['handler'] = handler_data

        job_data
      end

      private

      def extract_job_data
        if job.respond_to?(:as_json)
          job.as_json
        else
          Hash[job.to_hash.map { |k, v| [k.to_s, v] }]
        end
      end

      def handler_data
        payload_object = job.payload_object

        return payload_object unless payload_object.respond_to?(:object)

        object_data(payload_object.object)
      end

      def object_data(object)
        {
          :method_name => job.payload_object.method_name,
          :args => job.payload_object.args,
          :object => object.is_a?(Class) ? object.name : object.to_s
        }
      rescue
        {}
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
rollbar-2.15.0 lib/rollbar/plugins/delayed_job/job_data.rb
rollbar-2.14.1 lib/rollbar/plugins/delayed_job/job_data.rb
rollbar-2.14.0 lib/rollbar/plugins/delayed_job/job_data.rb
rollbar-2.13.3 lib/rollbar/plugins/delayed_job/job_data.rb
rollbar-2.13.2 lib/rollbar/plugins/delayed_job/job_data.rb
rollbar-2.13.1 lib/rollbar/plugins/delayed_job/job_data.rb
rollbar-2.13.0 lib/rollbar/plugins/delayed_job/job_data.rb