Class: Subservient::Job

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bs_job) ⇒ Job

Returns a new instance of Job.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/subservient/job.rb', line 7

def initialize bs_job
  @bs_job      = bs_job
  @input       = JSON.parse (@bs_job.body)

  task_str     = @input.fetch('task')
  arr          = task_str.rpartition('#').reject { |e| e.empty? or e == '#' }
  @task_method = (arr[1] || :process).to_sym
  task_class   = Object.const_get(arr[0])
  raise MissingTaskError unless task_class.ancestors.include? Subservient::Task
  @task        = task_class.new self
  raise MissingTaskError unless @task.respond_to? @task_method
rescue JSON::JSONError, KeyError
  raise MalformedJobError
rescue NameError
  raise MissingTaskError
end

Instance Attribute Details

#bs_jobObject (readonly)

Returns the value of attribute bs_job.



5
6
7
# File 'lib/subservient/job.rb', line 5

def bs_job
  @bs_job
end

#inputObject (readonly)

Returns the value of attribute input.



5
6
7
# File 'lib/subservient/job.rb', line 5

def input
  @input
end

#taskObject (readonly)

Returns the value of attribute task.



5
6
7
# File 'lib/subservient/job.rb', line 5

def task
  @task
end

#task_methodObject (readonly)

Returns the value of attribute task_method.



5
6
7
# File 'lib/subservient/job.rb', line 5

def task_method
  @task_method
end

Instance Method Details

#executeObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/subservient/job.rb', line 24

def execute
  @bs_job.delete
  @task.execute_job
rescue RetryJob => e
  if e.max_retries and e.max_retries < @bs_job.stats.retries
    puts "#{e.inspect} - RELEASING JOB #{@job.bs_job.id}"
    puts e.backtrace
    @bs_job.release
  else
    puts "#{e.inspect} - BURYING JOB (EXCEEDED MAX RETRIES) #{@job.bs_job.id}"
    puts e.backtrace
    @bs_job.bury
  end
rescue BuryJob => e
  puts "#{e.inspect} - BURYING JOB #{@job.bs_job.id}"
  puts e.backtrace
  @bs_job.bury
end