Module: TraceView::Inst::ResqueClient

Defined in:
lib/traceview/inst/resque.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



10
11
12
13
14
15
# File 'lib/traceview/inst/resque.rb', line 10

def self.included(klass)
  klass.send :extend, ::Resque
  ::TraceView::Util.method_alias(klass, :enqueue, ::Resque)
  ::TraceView::Util.method_alias(klass, :enqueue_to, ::Resque)
  ::TraceView::Util.method_alias(klass, :dequeue, ::Resque)
end

Instance Method Details

#dequeue_with_traceview(klass, *args) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/traceview/inst/resque.rb', line 69

def dequeue_with_traceview(klass, *args)
  if TraceView.tracing?
    report_kvs = extract_trace_details(:dequeue, klass, args)

    TraceView::API.trace(:'resque-client', report_kvs) do
      dequeue_without_traceview(klass, *args)
    end
  else
    dequeue_without_traceview(klass, *args)
  end
end

#enqueue_to_with_traceview(queue, klass, *args) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
# File 'lib/traceview/inst/resque.rb', line 56

def enqueue_to_with_traceview(queue, klass, *args)
  if TraceView.tracing? && !TraceView.tracing_layer_op?(:enqueue)
    report_kvs = extract_trace_details(:enqueue_to, klass, args)
    report_kvs[:Queue] = queue.to_s if queue

    TraceView::API.trace(:'resque-client', report_kvs) do
      enqueue_to_without_traceview(queue, klass, *args)
    end
  else
    enqueue_to_without_traceview(queue, klass, *args)
  end
end

#enqueue_with_traceview(klass, *args) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/traceview/inst/resque.rb', line 44

def enqueue_with_traceview(klass, *args)
  if TraceView.tracing?
    report_kvs = extract_trace_details(:enqueue, klass, args)

    TraceView::API.trace(:'resque-client', report_kvs, :enqueue) do
      enqueue_without_traceview(klass, *args)
    end
  else
    enqueue_without_traceview(klass, *args)
  end
end

#extract_trace_details(op, klass, args) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/traceview/inst/resque.rb', line 17

def extract_trace_details(op, klass, args)
  report_kvs = {}

  begin
    report_kvs[:Spec] = :pushq
    report_kvs[:Flavor] = :resque
    report_kvs[:JobName] = klass.to_s

    if TraceView::Config[:resqueclient][:log_args]
      kv_args = args.to_json

      # Limit the argument json string to 1024 bytes
      if kv_args.length > 1024
        report_kvs[:Args] = kv_args[0..1023] + '...[snipped]'
      else
        report_kvs[:Args] = kv_args
      end
    end
    report_kvs[:Backtrace] = TraceView::API.backtrace if TraceView::Config[:resqueclient][:collect_backtraces]
    report_kvs[:Queue] = klass.instance_variable_get(:@queue)
  rescue => e
    TraceView.logger.debug "[traceview/debug] #{__method__}:#{File.basename(__FILE__)}:#{__LINE__}: #{e.message}" if TraceView::Config[:verbose]
  end

  report_kvs
end