From 65542e27979fce1f6b0893a00e4d51849616de34 Mon Sep 17 00:00:00 2001 From: Isaac Seymour Date: Tue, 30 Dec 2014 18:26:39 +0000 Subject: ActiveJob: delegate full deserialization to class --- activejob/CHANGELOG.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'activejob/CHANGELOG.md') diff --git a/activejob/CHANGELOG.md b/activejob/CHANGELOG.md index f9c481998e..c9d9484518 100644 --- a/activejob/CHANGELOG.md +++ b/activejob/CHANGELOG.md @@ -1 +1,26 @@ +* `ActiveJob::Base.deserialize` delegates to the job class + + Since `ActiveJob::Base#deserialize` can be overriden by subclasses (like `ActiveJob::Base#serialize`) + this allows jobs to attach arbitrary metadata when they get serialized and read it back when they get + performed. E.g. + + class DeliverWebhookJob < ActiveJob::Base + def serialize + super.merge('attempt_number' => (@attempt_number || 0) + 1) + end + + def deserialize(job_data) + super(job_data) + @attempt_number = job_data['attempt_number'] + end + + rescue_from(TimeoutError) do |ex| + raise ex if @attempt_number > 5 + retry_job(wait: 10) + end + end + + *Isaac Seymour* + + Please check [4-2-stable](https://github.com/rails/rails/blob/4-2-stable/activejob/CHANGELOG.md) for previous changes. -- cgit v1.2.3