diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2018-02-09 15:45:11 -0500 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2018-02-14 13:10:08 -0500 |
commit | b098584f63521d214c1107e6eaa24f292b8e4df8 (patch) | |
tree | a3988a89ff8bcd4333417e9d47a0610ddceab8b8 /activejob/lib | |
parent | ea615332452e6860872020aa161c5d34e81f1eea (diff) | |
download | rails-b098584f63521d214c1107e6eaa24f292b8e4df8.tar.gz rails-b098584f63521d214c1107e6eaa24f292b8e4df8.tar.bz2 rails-b098584f63521d214c1107e6eaa24f292b8e4df8.zip |
Add symbol and duration serializers
Diffstat (limited to 'activejob/lib')
-rw-r--r-- | activejob/lib/active_job/serializers.rb | 6 | ||||
-rw-r--r-- | activejob/lib/active_job/serializers/duration_serializer.rb | 24 | ||||
-rw-r--r-- | activejob/lib/active_job/serializers/symbol_serializer.rb | 21 |
3 files changed, 50 insertions, 1 deletions
diff --git a/activejob/lib/active_job/serializers.rb b/activejob/lib/active_job/serializers.rb index 12458ea572..9e3fcda28d 100644 --- a/activejob/lib/active_job/serializers.rb +++ b/activejob/lib/active_job/serializers.rb @@ -34,6 +34,8 @@ module ActiveJob autoload :HashSerializer autoload :ObjectSerializer autoload :StandardTypeSerializer + autoload :SymbolSerializer + autoload :DurationSerializer mattr_accessor :_additional_serializers self._additional_serializers = Set.new @@ -94,6 +96,8 @@ module ActiveJob StandardTypeSerializer, HashWithIndifferentAccessSerializer, HashSerializer, - ArraySerializer + ArraySerializer, + SymbolSerializer, + DurationSerializer end end 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..46543cc30d --- /dev/null +++ b/activejob/lib/active_job/serializers/duration_serializer.rb @@ -0,0 +1,24 @@ +module ActiveJob + module Serializers + class DurationSerializer < ObjectSerializer + class << self + def serialize(duration) + super("value" => duration.value, "parts" => Serializers.serialize(duration.parts)) + end + + def deserialize(hash) + value = hash["value"] + parts = Serializers.deserialize(hash["parts"]) + + klass.new(value, parts) + end + + private + + def klass + ActiveSupport::Duration + end + end + end + end +end diff --git a/activejob/lib/active_job/serializers/symbol_serializer.rb b/activejob/lib/active_job/serializers/symbol_serializer.rb new file mode 100644 index 0000000000..ec27f6828a --- /dev/null +++ b/activejob/lib/active_job/serializers/symbol_serializer.rb @@ -0,0 +1,21 @@ +module ActiveJob + module Serializers + class SymbolSerializer < ObjectSerializer + class << self + def serialize(argument) + super("value" => argument.to_s) + end + + def deserialize(argument) + argument["value"].to_sym + end + + private + + def klass + Symbol + end + end + end + end +end |