aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/CHANGELOG.md
diff options
context:
space:
mode:
authorIsaac Seymour <isaac@gocardless.com>2014-12-30 18:26:39 +0000
committerIsaac Seymour <isaac@gocardless.com>2014-12-30 23:33:09 +0000
commit65542e27979fce1f6b0893a00e4d51849616de34 (patch)
treecd88216d18bf997156c290a56790b23540ff60c1 /activejob/CHANGELOG.md
parent2326e0ee9f47cd7e5beea4c5fabb674bbf30fd3d (diff)
downloadrails-65542e27979fce1f6b0893a00e4d51849616de34.tar.gz
rails-65542e27979fce1f6b0893a00e4d51849616de34.tar.bz2
rails-65542e27979fce1f6b0893a00e4d51849616de34.zip
ActiveJob: delegate full deserialization to class
Diffstat (limited to 'activejob/CHANGELOG.md')
-rw-r--r--activejob/CHANGELOG.md25
1 files changed, 25 insertions, 0 deletions
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.