panko_serializer 0.7.0 → 0.7.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +39 -0
  3. data/.github/workflows/ruby.yml +51 -0
  4. data/.gitignore +2 -1
  5. data/Gemfile +2 -2
  6. data/README.md +7 -7
  7. data/benchmarks/bm_panko_json.rb +5 -1
  8. data/benchmarks/setup.rb +3 -1
  9. data/benchmarks/type_casts/bm_panko.rb +2 -2
  10. data/docs/.DS_Store +0 -0
  11. data/docs/README.md +195 -8
  12. data/docs/core/Footer.js +81 -0
  13. data/docs/{associations.md → docs/associations.md} +8 -4
  14. data/docs/{attributes.md → docs/attributes.md} +25 -13
  15. data/docs/{design-choices.md → docs/design-choices.md} +6 -2
  16. data/docs/{getting-started.md → docs/getting-started.md} +19 -2
  17. data/docs/docs/introduction.md +13 -0
  18. data/docs/{performance.md → docs/performance.md} +11 -7
  19. data/docs/{response-bag.md → docs/response-bag.md} +24 -1
  20. data/docs/i18n/en.json +50 -0
  21. data/docs/package-lock.json +9636 -0
  22. data/docs/package.json +14 -0
  23. data/docs/sidebars.json +15 -0
  24. data/docs/siteConfig.js +80 -0
  25. data/docs/static/.DS_Store +0 -0
  26. data/docs/static/css/custom.css +51 -0
  27. data/docs/static/img/favicon.ico +0 -0
  28. data/docs/static/img/oss_logo.png +0 -0
  29. data/docs/static/img/undraw_code_review.svg +1 -0
  30. data/docs/static/img/undraw_monitor.svg +1 -0
  31. data/docs/static/img/undraw_note_list.svg +1 -0
  32. data/docs/static/img/undraw_online.svg +1 -0
  33. data/docs/static/img/undraw_open_source.svg +1 -0
  34. data/docs/static/img/undraw_operating_system.svg +1 -0
  35. data/docs/static/img/undraw_react.svg +1 -0
  36. data/docs/static/img/undraw_tweetstorm.svg +1 -0
  37. data/docs/static/img/undraw_youtube_tutorial.svg +1 -0
  38. data/docs/static/index.html +14 -0
  39. data/ext/panko_serializer/attributes_writer/active_record.c +58 -16
  40. data/ext/panko_serializer/attributes_writer/attributes_writer.c +8 -7
  41. data/ext/panko_serializer/attributes_writer/common.h +1 -1
  42. data/ext/panko_serializer/attributes_writer/hash.c +2 -4
  43. data/ext/panko_serializer/attributes_writer/plain.c +2 -3
  44. data/ext/panko_serializer/attributes_writer/type_cast/type_cast.c +70 -21
  45. data/ext/panko_serializer/attributes_writer/type_cast/type_cast.h +1 -2
  46. data/ext/panko_serializer/panko_serializer.c +23 -8
  47. data/ext/panko_serializer/serialization_descriptor/association.c +1 -0
  48. data/ext/panko_serializer/serialization_descriptor/attribute.c +1 -0
  49. data/ext/panko_serializer/serialization_descriptor/serialization_descriptor.c +7 -10
  50. data/lib/panko/association.rb +1 -1
  51. data/lib/panko/object_writer.rb +8 -0
  52. data/lib/panko/response.rb +5 -4
  53. data/lib/panko/serializer.rb +6 -2
  54. data/lib/panko/serializer_resolver.rb +28 -15
  55. data/lib/panko/version.rb +1 -1
  56. data/panko_serializer.gemspec +8 -7
  57. metadata +59 -23
  58. data/.travis.yml +0 -29
  59. data/docs/docpress.json +0 -4
@@ -68,11 +68,10 @@ static struct _TypeCast type_casts[] = {
68
68
  {is_boolean_type, cast_boolean_type},
69
69
  {is_date_time_type, cast_date_time_type},
70
70
  {is_float_type, cast_float_type},
71
- {is_json_type, cast_json_type},
72
71
 
73
72
  {NULL, NULL}};
74
73
 
75
- extern VALUE type_cast(VALUE type_metadata, VALUE value);
74
+ extern VALUE type_cast(VALUE type_metadata, VALUE value, VALUE* isJson);
76
75
  void panko_init_type_cast(VALUE mPanko);
77
76
 
78
77
  // Introduced in ruby 2.4
@@ -5,6 +5,7 @@
5
5
  static ID push_value_id;
6
6
  static ID push_array_id;
7
7
  static ID push_object_id;
8
+ static ID push_json_id;
8
9
  static ID pop_id;
9
10
 
10
11
  static ID to_a_id;
@@ -12,8 +13,14 @@ static ID to_a_id;
12
13
  static ID object_id;
13
14
  static ID serialization_context_id;
14
15
 
15
- void write_value(VALUE str_writer, VALUE key, VALUE value) {
16
- rb_funcall(str_writer, push_value_id, 2, value, key);
16
+ static VALUE SKIP = Qundef;
17
+
18
+ void write_value(VALUE str_writer, VALUE key, VALUE value, VALUE isJson) {
19
+ if(isJson == Qtrue) {
20
+ rb_funcall(str_writer, push_json_id, 2, value, key);
21
+ } else {
22
+ rb_funcall(str_writer, push_value_id, 2, value, key);
23
+ }
17
24
  }
18
25
 
19
26
  void serialize_method_fields(VALUE object, VALUE str_writer,
@@ -35,8 +42,9 @@ void serialize_method_fields(VALUE object, VALUE str_writer,
35
42
  Attribute attribute = PANKO_ATTRIBUTE_READ(raw_attribute);
36
43
 
37
44
  volatile VALUE result = rb_funcall(serializer, attribute->name_id, 0);
38
-
39
- write_value(str_writer, attribute->name_str, result);
45
+ if (result != SKIP) {
46
+ write_value(str_writer, attribute->name_str, result, Qfalse);
47
+ }
40
48
  }
41
49
 
42
50
  rb_ivar_set(serializer, object_id, Qnil);
@@ -44,8 +52,10 @@ void serialize_method_fields(VALUE object, VALUE str_writer,
44
52
 
45
53
  void serialize_fields(VALUE object, VALUE str_writer,
46
54
  SerializationDescriptor descriptor) {
47
- descriptor->attributes_writer.write_attributes(object, descriptor->attributes,
48
- write_value, str_writer);
55
+ descriptor->attributes_writer.write_attributes(object,
56
+ descriptor->attributes,
57
+ write_value,
58
+ str_writer);
49
59
 
50
60
  serialize_method_fields(object, str_writer, descriptor);
51
61
  }
@@ -60,7 +70,7 @@ void serialize_has_one_associations(VALUE object, VALUE str_writer,
60
70
  volatile VALUE value = rb_funcall(object, association->name_id, 0);
61
71
 
62
72
  if (NIL_P(value)) {
63
- write_value(str_writer, association->name_str, value);
73
+ write_value(str_writer, association->name_str, value, Qfalse);
64
74
  } else {
65
75
  serialize_object(association->name_str, value, str_writer,
66
76
  association->descriptor);
@@ -78,7 +88,7 @@ void serialize_has_many_associations(VALUE object, VALUE str_writer,
78
88
  volatile VALUE value = rb_funcall(object, association->name_id, 0);
79
89
 
80
90
  if (NIL_P(value)) {
81
- write_value(str_writer, association->name_str, value);
91
+ write_value(str_writer, association->name_str, value, Qfalse);
82
92
  } else {
83
93
  serialize_objects(association->name_str, value, str_writer,
84
94
  association->descriptor);
@@ -146,6 +156,7 @@ void Init_panko_serializer() {
146
156
  push_value_id = rb_intern("push_value");
147
157
  push_array_id = rb_intern("push_array");
148
158
  push_object_id = rb_intern("push_object");
159
+ push_json_id = rb_intern("push_json");
149
160
  pop_id = rb_intern("pop");
150
161
  to_a_id = rb_intern("to_a");
151
162
  object_id = rb_intern("@object");
@@ -159,6 +170,10 @@ void Init_panko_serializer() {
159
170
  rb_define_singleton_method(mPanko, "serialize_objects", serialize_objects_api,
160
171
  3);
161
172
 
173
+ VALUE mPankoSerializer = rb_const_get(mPanko, rb_intern("Serializer"));
174
+ SKIP = rb_const_get(mPankoSerializer, rb_intern("SKIP"));
175
+ rb_global_variable(&SKIP);
176
+
162
177
  panko_init_serialization_descriptor(mPanko);
163
178
  init_attributes_writer(mPanko);
164
179
  panko_init_type_cast(mPanko);
@@ -77,6 +77,7 @@ VALUE association_decriptor_aset(VALUE self, VALUE descriptor) {
77
77
 
78
78
  void panko_init_association(VALUE mPanko) {
79
79
  cAssociation = rb_define_class_under(mPanko, "Association", rb_cObject);
80
+ rb_global_variable(&cAssociation);
80
81
 
81
82
  rb_define_module_function(cAssociation, "new", association_new, -1);
82
83
 
@@ -85,6 +85,7 @@ void panko_init_attribute(VALUE mPanko) {
85
85
  attribute_aliases_id = rb_intern("attribute_aliases");
86
86
 
87
87
  cAttribute = rb_define_class_under(mPanko, "Attribute", rb_cObject);
88
+ rb_global_variable(&cAttribute);
88
89
 
89
90
  rb_define_module_function(cAttribute, "new", attribute_new, -1);
90
91
 
@@ -1,7 +1,5 @@
1
1
  #include "serialization_descriptor.h"
2
2
 
3
- VALUE cSerializationDescriptor;
4
-
5
3
  static ID object_id;
6
4
  static ID sc_id;
7
5
 
@@ -10,8 +8,8 @@ static void sd_free(SerializationDescriptor sd) {
10
8
  return;
11
9
  }
12
10
 
13
- sd->serializer_type = Qnil;
14
11
  sd->serializer = Qnil;
12
+ sd->serializer_type = Qnil;
15
13
  sd->attributes = Qnil;
16
14
  sd->method_fields = Qnil;
17
15
  sd->has_one_associations = Qnil;
@@ -21,8 +19,8 @@ static void sd_free(SerializationDescriptor sd) {
21
19
  }
22
20
 
23
21
  void sd_mark(SerializationDescriptor data) {
24
- rb_gc_mark(data->serializer_type);
25
22
  rb_gc_mark(data->serializer);
23
+ rb_gc_mark(data->serializer_type);
26
24
  rb_gc_mark(data->attributes);
27
25
  rb_gc_mark(data->method_fields);
28
26
  rb_gc_mark(data->has_one_associations);
@@ -30,7 +28,7 @@ void sd_mark(SerializationDescriptor data) {
30
28
  rb_gc_mark(data->aliases);
31
29
  }
32
30
 
33
- static VALUE sd_new(int argc, VALUE* argv, VALUE self) {
31
+ static VALUE sd_alloc(VALUE klass) {
34
32
  SerializationDescriptor sd = ALLOC(struct _SerializationDescriptor);
35
33
 
36
34
  sd->serializer = Qnil;
@@ -43,7 +41,7 @@ static VALUE sd_new(int argc, VALUE* argv, VALUE self) {
43
41
 
44
42
  sd->attributes_writer = create_empty_attributes_writer();
45
43
 
46
- return Data_Wrap_Struct(cSerializationDescriptor, sd_mark, sd_free, sd);
44
+ return Data_Wrap_Struct(klass, sd_mark, sd_free, sd);
47
45
  }
48
46
 
49
47
  SerializationDescriptor sd_read(VALUE descriptor) {
@@ -122,7 +120,7 @@ VALUE sd_type_set(VALUE self, VALUE type) {
122
120
  return Qnil;
123
121
  }
124
122
 
125
- VALUE sd_type_aref(VALUE self, VALUE type) {
123
+ VALUE sd_type_aref(VALUE self) {
126
124
  SerializationDescriptor sd = (SerializationDescriptor)DATA_PTR(self);
127
125
  return sd->serializer_type;
128
126
  }
@@ -142,11 +140,10 @@ void panko_init_serialization_descriptor(VALUE mPanko) {
142
140
  object_id = rb_intern("@object");
143
141
  sc_id = rb_intern("@sc");
144
142
 
145
- cSerializationDescriptor =
143
+ VALUE cSerializationDescriptor =
146
144
  rb_define_class_under(mPanko, "SerializationDescriptor", rb_cObject);
147
145
 
148
- rb_define_module_function(cSerializationDescriptor, "new", sd_new, -1);
149
-
146
+ rb_define_alloc_func(cSerializationDescriptor, sd_alloc);
150
147
  rb_define_method(cSerializationDescriptor, "serializer=", sd_serializer_set,
151
148
  1);
152
149
  rb_define_method(cSerializationDescriptor, "serializer", sd_serializer_ref,
@@ -11,7 +11,7 @@ module Panko
11
11
  end
12
12
 
13
13
  def inspect
14
- "<Panko::Attribute name=#{name_str.inspect}>"
14
+ "<Panko::Association name=#{name_str.inspect}>"
15
15
  end
16
16
  end
17
17
  end
@@ -33,6 +33,14 @@ class Panko::ObjectWriter
33
33
  @values.last[key] = value.as_json
34
34
  end
35
35
 
36
+ def push_json(value, key = nil)
37
+ if value.is_a?(String)
38
+ value = Oj.load(value) rescue nil
39
+ end
40
+
41
+ push_value(value, key)
42
+ end
43
+
36
44
  def pop
37
45
  result = @values.pop
38
46
 
@@ -22,12 +22,13 @@ module Panko
22
22
  Panko::JsonValue.from(value)
23
23
  end
24
24
 
25
- def self.array_serializer(data, serializer)
26
- Panko::ArraySerializer.new(data, each_serializer: serializer)
25
+ def self.array_serializer(data, serializer, options = {})
26
+ merged_options = options.merge(each_serializer: serializer)
27
+ Panko::ArraySerializer.new(data, merged_options)
27
28
  end
28
29
 
29
- def self.serializer(data, serializer)
30
- json serializer.new.serialize_to_json(data)
30
+ def self.serializer(data, serializer, options = {})
31
+ json serializer.new(options).serialize_to_json(data)
31
32
  end
32
33
  end
33
34
 
@@ -32,6 +32,8 @@ end
32
32
 
33
33
  module Panko
34
34
  class Serializer
35
+ SKIP = Object.new.freeze
36
+
35
37
  class << self
36
38
  def inherited(base)
37
39
  if _descriptor.nil?
@@ -63,6 +65,8 @@ module Panko
63
65
  end
64
66
 
65
67
  def method_added(method)
68
+ super(method)
69
+
66
70
  return if @_descriptor.nil?
67
71
 
68
72
  deleted_attr = @_descriptor.attributes.delete(method)
@@ -71,7 +75,7 @@ module Panko
71
75
 
72
76
  def has_one(name, options = {})
73
77
  serializer_const = options[:serializer]
74
- serializer_const = Panko::SerializerResolver.resolve(name.to_s) if serializer_const.nil?
78
+ serializer_const = Panko::SerializerResolver.resolve(name.to_s, self) if serializer_const.nil?
75
79
 
76
80
  raise "Can't find serializer for #{self.name}.#{name} has_one relationship." if serializer_const.nil?
77
81
 
@@ -84,7 +88,7 @@ module Panko
84
88
 
85
89
  def has_many(name, options = {})
86
90
  serializer_const = options[:serializer] || options[:each_serializer]
87
- serializer_const = Panko::SerializerResolver.resolve(name.to_s) if serializer_const.nil?
91
+ serializer_const = Panko::SerializerResolver.resolve(name.to_s, self) if serializer_const.nil?
88
92
 
89
93
  raise "Can't find serializer for #{self.name}.#{name} has_many relationship." if serializer_const.nil?
90
94
 
@@ -1,25 +1,38 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'active_support/core_ext/string/inflections'
4
+ require 'active_support/core_ext/module/introspection'
5
+
3
6
  class Panko::SerializerResolver
4
- def self.resolve(name)
5
- serializer_name = "#{name.singularize.camelize}Serializer"
6
- serializer_const = safe_const_get(serializer_name)
7
+ class << self
8
+ def resolve(name, from)
9
+ serializer_const = nil
7
10
 
8
- return nil if serializer_const.nil?
9
- return nil unless is_serializer(serializer_const)
11
+ if namespace = namespace_for(from)
12
+ serializer_const = safe_serializer_get("#{namespace}::#{name.singularize.camelize}Serializer")
13
+ end
10
14
 
11
- serializer_const
12
- end
15
+ serializer_const ||= safe_serializer_get("#{name.singularize.camelize}Serializer")
16
+ serializer_const
17
+ end
13
18
 
14
- private
19
+ private
15
20
 
16
- def self.is_serializer(const)
17
- const < Panko::Serializer
18
- end
21
+ if Module.method_defined?(:module_parent_name)
22
+ def namespace_for(from)
23
+ from.module_parent_name
24
+ end
25
+ else
26
+ def namespace_for(from)
27
+ from.parent_name
28
+ end
29
+ end
19
30
 
20
- def self.safe_const_get(name)
21
- Object.const_get(name)
22
- rescue NameError
23
- nil
31
+ def safe_serializer_get(name)
32
+ const = Object.const_get(name)
33
+ const < Panko::Serializer ? const : nil
34
+ rescue NameError
35
+ nil
36
+ end
24
37
  end
25
38
  end
data/lib/panko/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Panko
4
- VERSION = "0.7.0"
4
+ VERSION = "0.7.5"
5
5
  end
@@ -11,17 +11,17 @@ Gem::Specification.new do |spec|
11
11
  spec.email = ["yosy101@gmail.com"]
12
12
 
13
13
  spec.summary = "High Performance JSON Serialization for ActiveRecord & Ruby Objects"
14
- spec.homepage = "https://yosiat.github.io/panko_serializer/"
14
+ spec.homepage = "https://panko.dev"
15
15
  spec.license = "MIT"
16
16
 
17
17
  spec.metadata = {
18
- "bug_tracker_uri" => "https://github.com/yosiat/panko_serializer/issues",
19
- "source_code_uri" => "https://github.com/yosiat/panko_serializer",
20
- "documentation_uri" => "https://yosiat.github.io/panko_serializer/",
21
- "changelog_uri" => "https://github.com/yosiat/panko_serializer/releases"
18
+ "bug_tracker_uri" => "https://github.com/panko-serializer/panko_serializer/issues",
19
+ "source_code_uri" => "https://github.com/panko-serializer/panko_serializer",
20
+ "documentation_uri" => "https://panko-serializer.github.io/panko_serializer/",
21
+ "changelog_uri" => "https://github.com/panko-serializer/panko_serializer/releases"
22
22
  }
23
23
 
24
- spec.required_ruby_version = ">= 2.3.7"
24
+ spec.required_ruby_version = ">= 2.5.0"
25
25
 
26
26
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
27
  f.match(%r{^(test|spec|features)/})
@@ -30,5 +30,6 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  spec.extensions << "ext/panko_serializer/extconf.rb"
32
32
 
33
- spec.add_dependency "oj", "~> 3.9.0"
33
+ spec.add_dependency "oj", "~> 3.11.0"
34
+ spec.add_dependency "activesupport"
34
35
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panko_serializer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yosi Attias
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-26 00:00:00.000000000 Z
11
+ date: 2021-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: oj
@@ -16,15 +16,29 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.9.0
19
+ version: 3.11.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.9.0
27
- description:
26
+ version: 3.11.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description:
28
42
  email:
29
43
  - yosy101@gmail.com
30
44
  executables: []
@@ -33,10 +47,11 @@ extensions:
33
47
  extra_rdoc_files: []
34
48
  files:
35
49
  - ".clang-format"
50
+ - ".github/workflows/docs.yml"
51
+ - ".github/workflows/ruby.yml"
36
52
  - ".gitignore"
37
53
  - ".rspec"
38
54
  - ".rubocop.yml"
39
- - ".travis.yml"
40
55
  - Gemfile
41
56
  - LICENSE.txt
42
57
  - README.md
@@ -59,14 +74,35 @@ files:
59
74
  - benchmarks/type_casts/bm_active_record.rb
60
75
  - benchmarks/type_casts/bm_panko.rb
61
76
  - benchmarks/type_casts/support.rb
77
+ - docs/.DS_Store
62
78
  - docs/README.md
63
- - docs/associations.md
64
- - docs/attributes.md
65
- - docs/design-choices.md
66
- - docs/docpress.json
67
- - docs/getting-started.md
68
- - docs/performance.md
69
- - docs/response-bag.md
79
+ - docs/core/Footer.js
80
+ - docs/docs/associations.md
81
+ - docs/docs/attributes.md
82
+ - docs/docs/design-choices.md
83
+ - docs/docs/getting-started.md
84
+ - docs/docs/introduction.md
85
+ - docs/docs/performance.md
86
+ - docs/docs/response-bag.md
87
+ - docs/i18n/en.json
88
+ - docs/package-lock.json
89
+ - docs/package.json
90
+ - docs/sidebars.json
91
+ - docs/siteConfig.js
92
+ - docs/static/.DS_Store
93
+ - docs/static/css/custom.css
94
+ - docs/static/img/favicon.ico
95
+ - docs/static/img/oss_logo.png
96
+ - docs/static/img/undraw_code_review.svg
97
+ - docs/static/img/undraw_monitor.svg
98
+ - docs/static/img/undraw_note_list.svg
99
+ - docs/static/img/undraw_online.svg
100
+ - docs/static/img/undraw_open_source.svg
101
+ - docs/static/img/undraw_operating_system.svg
102
+ - docs/static/img/undraw_react.svg
103
+ - docs/static/img/undraw_tweetstorm.svg
104
+ - docs/static/img/undraw_youtube_tutorial.svg
105
+ - docs/static/index.html
70
106
  - ext/panko_serializer/attributes_writer/active_record.c
71
107
  - ext/panko_serializer/attributes_writer/active_record.h
72
108
  - ext/panko_serializer/attributes_writer/attributes_writer.c
@@ -102,15 +138,15 @@ files:
102
138
  - lib/panko/version.rb
103
139
  - lib/panko_serializer.rb
104
140
  - panko_serializer.gemspec
105
- homepage: https://yosiat.github.io/panko_serializer/
141
+ homepage: https://panko.dev
106
142
  licenses:
107
143
  - MIT
108
144
  metadata:
109
- bug_tracker_uri: https://github.com/yosiat/panko_serializer/issues
110
- source_code_uri: https://github.com/yosiat/panko_serializer
111
- documentation_uri: https://yosiat.github.io/panko_serializer/
112
- changelog_uri: https://github.com/yosiat/panko_serializer/releases
113
- post_install_message:
145
+ bug_tracker_uri: https://github.com/panko-serializer/panko_serializer/issues
146
+ source_code_uri: https://github.com/panko-serializer/panko_serializer
147
+ documentation_uri: https://panko-serializer.github.io/panko_serializer/
148
+ changelog_uri: https://github.com/panko-serializer/panko_serializer/releases
149
+ post_install_message:
114
150
  rdoc_options: []
115
151
  require_paths:
116
152
  - lib
@@ -118,15 +154,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
118
154
  requirements:
119
155
  - - ">="
120
156
  - !ruby/object:Gem::Version
121
- version: 2.3.7
157
+ version: 2.5.0
122
158
  required_rubygems_version: !ruby/object:Gem::Requirement
123
159
  requirements:
124
160
  - - ">="
125
161
  - !ruby/object:Gem::Version
126
162
  version: '0'
127
163
  requirements: []
128
- rubygems_version: 3.0.6
129
- signing_key:
164
+ rubygems_version: 3.1.4
165
+ signing_key:
130
166
  specification_version: 4
131
167
  summary: High Performance JSON Serialization for ActiveRecord & Ruby Objects
132
168
  test_files: []