aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/lib/active_job/serializers/duration_serializer.rb
diff options
context:
space:
mode:
authorRafael França <rafaelmfranca@gmail.com>2018-02-14 14:47:46 -0500
committerGitHub <noreply@github.com>2018-02-14 14:47:46 -0500
commitfa9e791e014a650f5ea6a14b283fed9621fc83e2 (patch)
tree42d892b55c66fd57cc62b7c996b01e30746341c5 /activejob/lib/active_job/serializers/duration_serializer.rb
parent57495086f0bb1315ea287f8d6bafad8fd48e18b2 (diff)
parent25a14bf2bde90224debee343ebfbb882c02b9588 (diff)
downloadrails-fa9e791e014a650f5ea6a14b283fed9621fc83e2.tar.gz
rails-fa9e791e014a650f5ea6a14b283fed9621fc83e2.tar.bz2
rails-fa9e791e014a650f5ea6a14b283fed9621fc83e2.zip
Merge pull request #30941 from toptal/introduce-custom-serializers-to-activejob-arguments
Introduce custom serializers to ActiveJob arguments
Diffstat (limited to 'activejob/lib/active_job/serializers/duration_serializer.rb')
-rw-r--r--activejob/lib/active_job/serializers/duration_serializer.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/activejob/lib/active_job/serializers/duration_serializer.rb b/activejob/lib/active_job/serializers/duration_serializer.rb
new file mode 100644
index 0000000000..715fe27a5c
--- /dev/null
+++ b/activejob/lib/active_job/serializers/duration_serializer.rb
@@ -0,0 +1,24 @@
+# frozen_string_literal: true
+
+module ActiveJob
+ module Serializers
+ class DurationSerializer < ObjectSerializer # :nodoc:
+ def serialize(duration)
+ super("value" => duration.value, "parts" => Arguments.serialize(duration.parts))
+ end
+
+ def deserialize(hash)
+ value = hash["value"]
+ parts = Arguments.deserialize(hash["parts"])
+
+ klass.new(value, parts)
+ end
+
+ private
+
+ def klass
+ ActiveSupport::Duration
+ end
+ end
+ end
+end