Class: Subservient::Job
- Inherits:
-
Object
- Object
- Subservient::Job
- Defined in:
- lib/subservient/job.rb
Instance Attribute Summary collapse
-
#bs_job ⇒ Object
readonly
Returns the value of attribute bs_job.
-
#input ⇒ Object
readonly
Returns the value of attribute input.
-
#task ⇒ Object
readonly
Returns the value of attribute task.
-
#task_method ⇒ Object
readonly
Returns the value of attribute task_method.
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(bs_job) ⇒ Job
constructor
A new instance of Job.
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_job ⇒ Object (readonly)
Returns the value of attribute bs_job.
5 6 7 |
# File 'lib/subservient/job.rb', line 5 def bs_job @bs_job end |
#input ⇒ Object (readonly)
Returns the value of attribute input.
5 6 7 |
# File 'lib/subservient/job.rb', line 5 def input @input end |
#task ⇒ Object (readonly)
Returns the value of attribute task.
5 6 7 |
# File 'lib/subservient/job.rb', line 5 def task @task end |
#task_method ⇒ Object (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
#execute ⇒ Object
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 |