aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/lib/active_job
diff options
context:
space:
mode:
authorRafael Mendonça França <rafaelmfranca@gmail.com>2018-02-09 16:50:57 -0500
committerRafael Mendonça França <rafaelmfranca@gmail.com>2018-02-14 13:10:08 -0500
commitd9a5c7011f62dd771a2fa430090e068b1f9785f3 (patch)
tree28907c8837dd84fc02272cac1b6b94e4f69be76c /activejob/lib/active_job
parentd2d98d69468bf34a39794496beb8f9f7b69088c4 (diff)
downloadrails-d9a5c7011f62dd771a2fa430090e068b1f9785f3.tar.gz
rails-d9a5c7011f62dd771a2fa430090e068b1f9785f3.tar.bz2
rails-d9a5c7011f62dd771a2fa430090e068b1f9785f3.zip
Add serializers for Time, Date and DateTime
Diffstat (limited to 'activejob/lib/active_job')
-rw-r--r--activejob/lib/active_job/serializers.rb8
-rw-r--r--activejob/lib/active_job/serializers/date_serializer.rb21
-rw-r--r--activejob/lib/active_job/serializers/date_time_serializer.rb21
-rw-r--r--activejob/lib/active_job/serializers/duration_serializer.rb2
-rw-r--r--activejob/lib/active_job/serializers/symbol_serializer.rb2
-rw-r--r--activejob/lib/active_job/serializers/time_serializer.rb21
6 files changed, 74 insertions, 1 deletions
diff --git a/activejob/lib/active_job/serializers.rb b/activejob/lib/active_job/serializers.rb
index 9e3fcda28d..dfd654175d 100644
--- a/activejob/lib/active_job/serializers.rb
+++ b/activejob/lib/active_job/serializers.rb
@@ -36,6 +36,9 @@ module ActiveJob
autoload :StandardTypeSerializer
autoload :SymbolSerializer
autoload :DurationSerializer
+ autoload :DateSerializer
+ autoload :TimeSerializer
+ autoload :DateTimeSerializer
mattr_accessor :_additional_serializers
self._additional_serializers = Set.new
@@ -98,6 +101,9 @@ module ActiveJob
HashSerializer,
ArraySerializer,
SymbolSerializer,
- DurationSerializer
+ DurationSerializer,
+ DateTimeSerializer,
+ DateSerializer,
+ TimeSerializer
end
end
diff --git a/activejob/lib/active_job/serializers/date_serializer.rb b/activejob/lib/active_job/serializers/date_serializer.rb
new file mode 100644
index 0000000000..e995d30faa
--- /dev/null
+++ b/activejob/lib/active_job/serializers/date_serializer.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module ActiveJob
+ module Serializers
+ class DateSerializer < ObjectSerializer # :nodoc:
+ def serialize(date)
+ super("value" => date.iso8601)
+ end
+
+ def deserialize(hash)
+ Date.iso8601(hash["value"])
+ end
+
+ private
+
+ def klass
+ Date
+ end
+ end
+ end
+end
diff --git a/activejob/lib/active_job/serializers/date_time_serializer.rb b/activejob/lib/active_job/serializers/date_time_serializer.rb
new file mode 100644
index 0000000000..fe780a1978
--- /dev/null
+++ b/activejob/lib/active_job/serializers/date_time_serializer.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module ActiveJob
+ module Serializers
+ class DateTimeSerializer < ObjectSerializer # :nodoc:
+ def serialize(time)
+ super("value" => time.iso8601)
+ end
+
+ def deserialize(hash)
+ DateTime.iso8601(hash["value"])
+ end
+
+ private
+
+ def klass
+ DateTime
+ end
+ end
+ end
+end
diff --git a/activejob/lib/active_job/serializers/duration_serializer.rb b/activejob/lib/active_job/serializers/duration_serializer.rb
index 94b0d0407a..a3c4c5d1c2 100644
--- a/activejob/lib/active_job/serializers/duration_serializer.rb
+++ b/activejob/lib/active_job/serializers/duration_serializer.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ActiveJob
module Serializers
class DurationSerializer < ObjectSerializer # :nodoc:
diff --git a/activejob/lib/active_job/serializers/symbol_serializer.rb b/activejob/lib/active_job/serializers/symbol_serializer.rb
index c8900de9d6..7e1f9553a2 100644
--- a/activejob/lib/active_job/serializers/symbol_serializer.rb
+++ b/activejob/lib/active_job/serializers/symbol_serializer.rb
@@ -1,3 +1,5 @@
+# frozen_string_literal: true
+
module ActiveJob
module Serializers
class SymbolSerializer < ObjectSerializer # :nodoc:
diff --git a/activejob/lib/active_job/serializers/time_serializer.rb b/activejob/lib/active_job/serializers/time_serializer.rb
new file mode 100644
index 0000000000..fe20772f35
--- /dev/null
+++ b/activejob/lib/active_job/serializers/time_serializer.rb
@@ -0,0 +1,21 @@
+# frozen_string_literal: true
+
+module ActiveJob
+ module Serializers
+ class TimeSerializer < ObjectSerializer # :nodoc:
+ def serialize(time)
+ super("value" => time.iso8601)
+ end
+
+ def deserialize(hash)
+ Time.iso8601(hash["value"])
+ end
+
+ private
+
+ def klass
+ Time
+ end
+ end
+ end
+end