Class: Resque::Plugins::Pertry
- Inherits:
-
Object
- Object
- Resque::Plugins::Pertry
- Includes:
- Resque::Pertry::Persistence, Resque::Pertry::Retry
- Defined in:
- lib/resque/plugins/pertry.rb
Constant Summary collapse
- JOB_HASH =
:_pertry
Instance Attribute Summary collapse
-
#exception_handled ⇒ Object
readonly
Returns the value of attribute exception_handled.
Class Method Summary collapse
-
.enqueue(args = {}) ⇒ Object
Enqueue a job.
-
.in_queue(queue) ⇒ Object
Specificy job queue.
- .instance(args = {}) ⇒ Object
-
.needs(*arguments) ⇒ Object
Define required job attributes.
-
.perform(args = {}) ⇒ Object
Perform a job.
-
.queue ⇒ Object
Get job queue.
-
.required_arguments ⇒ Object
List of required attributes.
Instance Method Summary collapse
- #arguments ⇒ Object
-
#complete! ⇒ Object
(also: #complete_job!)
mark job as complete.
- #exception_handled! ⇒ Object
-
#fail! ⇒ Object
(also: #fail_job!)
mark job as failed, won’t be retried.
- #handle_exception(exception) ⇒ Object
-
#initialize(arguments, job_properties) ⇒ Pertry
constructor
A new instance of Pertry.
- #payload ⇒ Object
-
#perform ⇒ Object
Perform method needs to be overridden in job classes.
Methods included from Resque::Pertry::Retry
#delay_before_retry, #exception_whitelisted?, #max_attempt_reached?, #retry!, #retry?, #ttl_expired?
Methods included from Resque::Pertry::Persistence
#audit_id, #model, #queue_time
Constructor Details
#initialize(arguments, job_properties) ⇒ Pertry
Returns a new instance of Pertry.
89 90 91 92 |
# File 'lib/resque/plugins/pertry.rb', line 89 def initialize(arguments, job_properties) set_job_arguments(arguments) set_job_properties(job_properties) end |
Instance Attribute Details
#exception_handled ⇒ Object (readonly)
Returns the value of attribute exception_handled.
9 10 11 |
# File 'lib/resque/plugins/pertry.rb', line 9 def exception_handled @exception_handled end |
Class Method Details
.enqueue(args = {}) ⇒ Object
Enqueue a job
14 15 16 17 18 19 20 21 22 |
# File 'lib/resque/plugins/pertry.rb', line 14 def enqueue(args = {}) raise ArgumentError, "Invalid arguments, expecting a Hash but got: #{args.inspect}" unless Hash === args args.symbolize_keys! args = check_arguments(args) raise ArgumentError, "Invalid arguments, #{JOB_HASH} is a reserved argument!" if args.key?(JOB_HASH) Resque.enqueue(self, args) end |
.in_queue(queue) ⇒ Object
Specificy job queue
45 46 47 |
# File 'lib/resque/plugins/pertry.rb', line 45 def in_queue(queue) @queue = queue.to_sym end |
.instance(args = {}) ⇒ Object
37 38 39 40 41 42 |
# File 'lib/resque/plugins/pertry.rb', line 37 def instance(args = {}) args.symbolize_keys! raise ArgumentError, "Job is not supported, missing key #{JOB_HASH} from payload #{args.inspect}" unless args.key?(JOB_HASH) new(check_arguments(args), args[JOB_HASH]) end |
.needs(*arguments) ⇒ Object
Define required job attributes
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/resque/plugins/pertry.rb', line 55 def needs(*arguments) arguments.each do |argument| if Hash === argument argument.each do |key, default| self.required_arguments << { :name => key, :default => default } end else self.required_arguments << { :name => argument } end end end |
.perform(args = {}) ⇒ Object
Perform a job
25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/resque/plugins/pertry.rb', line 25 def perform(args = {}) raise ArgumentError, "Invalid arguments, expecting a Hash but got: #{args.inspect}" unless Hash === args begin job = instance(args) job.perform rescue => e job.handle_exception(e) raise unless job.exception_handled end end |
.queue ⇒ Object
Get job queue
50 51 52 |
# File 'lib/resque/plugins/pertry.rb', line 50 def queue @queue or raise ArgumentError, "No queue defined for job #{self.name}!" end |
.required_arguments ⇒ Object
List of required attributes
68 69 70 |
# File 'lib/resque/plugins/pertry.rb', line 68 def required_arguments @required_arguments ||= [] end |
Instance Method Details
#arguments ⇒ Object
126 127 128 |
# File 'lib/resque/plugins/pertry.rb', line 126 def arguments @_arguments end |
#complete! ⇒ Object Also known as: complete_job!
mark job as complete
121 122 123 |
# File 'lib/resque/plugins/pertry.rb', line 121 def complete! Resque::Pertry::ResquePertryPersistence.finnish_job(self.class, payload) end |
#exception_handled! ⇒ Object
110 111 112 |
# File 'lib/resque/plugins/pertry.rb', line 110 def exception_handled! @exception_handled = true end |
#fail! ⇒ Object Also known as: fail_job!
mark job as failed, won’t be retried
115 116 117 |
# File 'lib/resque/plugins/pertry.rb', line 115 def fail! Resque::Pertry::ResquePertryPersistence.fail_job(self.class, payload) end |
#handle_exception(exception) ⇒ Object
99 100 101 102 103 104 |
# File 'lib/resque/plugins/pertry.rb', line 99 def handle_exception(exception) # we don't handle exceptions by default, leave it for resque # when overridding this method, if you decide you want to completely # handle it, and not pass it back to resque, you'll need to call # exception_handled! end |
#payload ⇒ Object
130 131 132 |
# File 'lib/resque/plugins/pertry.rb', line 130 def payload @_arguments.merge(JOB_HASH => @_job_properties) end |
#perform ⇒ Object
Perform method needs to be overridden in job classes
95 96 97 |
# File 'lib/resque/plugins/pertry.rb', line 95 def perform raise NoMethodError, "No method #{self.class.name}#perform defined!" end |