Class: Dynamiq::Job

Inherits:
Object
  • Object
show all
Defined in:
lib/dynamiq/job.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(queue, message = nil) ⇒ Job

Returns a new instance of Job.



5
6
7
8
9
# File 'lib/dynamiq/job.rb', line 5

def initialize(queue, message = nil)
  @queue = queue
  @message = message
  @item = message.is_a?(Hash) ? message : Sidekiq.load_json(message)      
end

Instance Attribute Details

#itemObject (readonly)

Returns the value of attribute item.



3
4
5
# File 'lib/dynamiq/job.rb', line 3

def item
  @item
end

#messageObject (readonly)

Returns the value of attribute message.



3
4
5
# File 'lib/dynamiq/job.rb', line 3

def message
  @message
end

#queueObject (readonly)

Returns the value of attribute queue.



3
4
5
# File 'lib/dynamiq/job.rb', line 3

def queue
  @queue
end

Instance Method Details

#[](name) ⇒ Object



67
68
69
# File 'lib/dynamiq/job.rb', line 67

def [](name)
  @item.__send__(:[], name)
end

#acknowledgeObject



63
64
65
# File 'lib/dynamiq/job.rb', line 63

def acknowledge
  # nothing to do
end

#argsObject



43
44
45
# File 'lib/dynamiq/job.rb', line 43

def args
  @item['args']
end

#deleteObject



79
80
81
82
83
84
85
86
87
# File 'lib/dynamiq/job.rb', line 79

def delete
  deleted = Sidekiq.redis do |conn|
    rem_value = @value.dup
    rem_value.delete 'score'
    conn.zrem [:dynamic_queue, @queue].join(':'), rem_value.to_json
  end

  deleted ? 1 : 0
end

#display_argsObject



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/dynamiq/job.rb', line 29

def display_args
  # Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
  @args ||= case klass
            when /\ASidekiq::Extensions::Delayed/
              safe_load(args[0], args) do |_, _, arg|
                arg
              end
            when "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper"
              args[1..-1]
            else
              args
            end
end

#display_classObject



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/dynamiq/job.rb', line 15

def display_class
  # Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
  @klass ||= case klass
             when /\ASidekiq::Extensions::Delayed/
               safe_load(args[0], klass) do |target, method, _|
                 "#{target}.#{method}"
               end
             when "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper"
               args[0]
             else
               klass
             end
end

#enqueued_atObject



55
56
57
# File 'lib/dynamiq/job.rb', line 55

def enqueued_at
  Time.at(@item['enqueued_at'] || 0).utc
end

#jidObject



47
48
49
# File 'lib/dynamiq/job.rb', line 47

def jid
  @item['jid']
end

#klassObject



11
12
13
# File 'lib/dynamiq/job.rb', line 11

def klass
  @item['class']
end

#latencyObject



59
60
61
# File 'lib/dynamiq/job.rb', line 59

def latency
  Time.now.to_f - @item['enqueued_at']
end

#queue_nameObject



71
72
73
# File 'lib/dynamiq/job.rb', line 71

def queue_name
  queue.name
end

#requeueObject



75
76
77
# File 'lib/dynamiq/job.rb', line 75

def requeue
  queue.requeue message
end

#scoreObject



51
52
53
# File 'lib/dynamiq/job.rb', line 51

def score
  @item['score']
end