diff options
author | Isaac Seymour <isaac@gocardless.com> | 2014-12-30 18:26:39 +0000 |
---|---|---|
committer | Isaac Seymour <isaac@gocardless.com> | 2014-12-30 23:33:09 +0000 |
commit | 65542e27979fce1f6b0893a00e4d51849616de34 (patch) | |
tree | cd88216d18bf997156c290a56790b23540ff60c1 /activejob/CHANGELOG.md | |
parent | 2326e0ee9f47cd7e5beea4c5fabb674bbf30fd3d (diff) | |
download | rails-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.md | 25 |
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. |