panko_serializer 0.7.9 → 0.8.0
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.
- checksums.yaml +4 -4
- data/.github/workflows/lint.yml +3 -4
- data/.github/workflows/ruby.yml +2 -2
- data/Gemfile +1 -1
- data/README.md +1 -1
- data/Rakefile +20 -17
- data/benchmarks/bm_serializer_resolver.rb +3 -3
- data/benchmarks/type_casts/support.rb +2 -1
- data/docs/docs/performance.md +6 -6
- data/docs/package-lock.json +44 -44
- data/ext/panko_serializer/attributes_writer/active_record.c +1 -1
- data/ext/panko_serializer/attributes_writer/type_cast/type_cast.c +1 -1
- data/ext/panko_serializer/attributes_writer/type_cast/type_cast.h +2 -1
- data/ext/panko_serializer/panko_serializer.c +3 -2
- data/ext/panko_serializer/serialization_descriptor/association.c +2 -1
- data/ext/panko_serializer/serialization_descriptor/attribute.c +2 -1
- data/lib/panko/serializer.rb +1 -1
- data/lib/panko/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 00eff973f0a008e93332c9a83da475001203d49479126e90311577aa8a3f4fd5
|
4
|
+
data.tar.gz: e94e6290b5103ddb0481110cf901d69da86b6831cc5ed59f95b94abf810dac29
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b87365560a2953a4f5b4027672b6f1721f89cc199345b82ed4ebb421263bfcb91f621651184e0d0c0f88c77f82d45acef61a061a0a863c21e7c2b066f57691be
|
7
|
+
data.tar.gz: 58c278c92461ef9f6f10ebee1579ad8bd801f6b5395625c982fc8ca1a32ab8e5e59d91527b820ddb9f662eea45df85952f7acf6060a9c9ac216208fac2db4523
|
data/.github/workflows/lint.yml
CHANGED
@@ -31,11 +31,10 @@ jobs:
|
|
31
31
|
RAILS_VERSION: "7.0"
|
32
32
|
run: |
|
33
33
|
bundle exec rake standard
|
34
|
-
clang-format ext/**/*.{c,h}
|
35
34
|
|
36
35
|
- name: Lint C
|
37
|
-
uses: jidicula/clang-format-action@v4.
|
36
|
+
uses: jidicula/clang-format-action@v4.11.0
|
38
37
|
with:
|
39
|
-
clang-format-version: "
|
38
|
+
clang-format-version: "16"
|
40
39
|
check-path: "ext/panko_serializer"
|
41
|
-
fallback-style: "Google"
|
40
|
+
fallback-style: "Google"
|
data/.github/workflows/ruby.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Panko
|
2
2
|
|
3
|
-

|
4
4
|
|
5
5
|
Panko is library which is inspired by ActiveModelSerializers 0.9 for serializing ActiveRecord/Ruby objects to JSON strings, fast.
|
6
6
|
|
data/Rakefile
CHANGED
@@ -32,7 +32,8 @@ end
|
|
32
32
|
def run_process(cmd)
|
33
33
|
puts "> Running #{cmd}"
|
34
34
|
lines = []
|
35
|
-
|
35
|
+
_stderr_reader, stderr_writer = IO.pipe
|
36
|
+
PTY.spawn(cmd, err: stderr_writer.fileno) do |stdout, stdin, pid|
|
36
37
|
stdout.each do |line|
|
37
38
|
print_and_flush "."
|
38
39
|
lines << line
|
@@ -65,24 +66,26 @@ def run_benchmarks(files, items_count: 2_300)
|
|
65
66
|
end
|
66
67
|
end
|
67
68
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
69
|
+
namespace :benchmarks do
|
70
|
+
desc "All"
|
71
|
+
task :all do
|
72
|
+
run_benchmarks Dir[File.join(__dir__, "benchmarks", "**", "bm_*")]
|
73
|
+
end
|
72
74
|
|
73
|
-
desc "Type Casts
|
74
|
-
task :
|
75
|
-
|
76
|
-
end
|
75
|
+
desc "Type Casts"
|
76
|
+
task :type_casts do
|
77
|
+
run_benchmarks Dir[File.join(__dir__, "benchmarks", "type_casts", "bm_*")], items_count: 0
|
78
|
+
end
|
77
79
|
|
78
|
-
desc "Sanity
|
79
|
-
task :sanity do
|
80
|
-
|
81
|
-
|
80
|
+
desc "Sanity"
|
81
|
+
task :sanity do
|
82
|
+
puts Time.now.strftime("%d/%m %H:%M:%S")
|
83
|
+
puts "=========================="
|
82
84
|
|
83
|
-
|
84
|
-
|
85
|
-
|
85
|
+
run_benchmarks [
|
86
|
+
File.join(__dir__, "benchmarks", "sanity.rb")
|
87
|
+
], items_count: 2300
|
86
88
|
|
87
|
-
|
89
|
+
puts "\n\n"
|
90
|
+
end
|
88
91
|
end
|
@@ -10,13 +10,13 @@ class RealSerializer < Panko::Serializer
|
|
10
10
|
end
|
11
11
|
|
12
12
|
Benchmark.run("CantFindConst") do
|
13
|
-
Panko::SerializerResolver.resolve("cant_find_const")
|
13
|
+
Panko::SerializerResolver.resolve("cant_find_const", Object)
|
14
14
|
end
|
15
15
|
|
16
16
|
Benchmark.run("NotSerializer") do
|
17
|
-
Panko::SerializerResolver.resolve("not")
|
17
|
+
Panko::SerializerResolver.resolve("not", Object)
|
18
18
|
end
|
19
19
|
|
20
20
|
Benchmark.run("RealSerializer") do
|
21
|
-
Panko::SerializerResolver.resolve("real")
|
21
|
+
Panko::SerializerResolver.resolve("real", Object)
|
22
22
|
end
|
@@ -8,7 +8,7 @@ require "pg"
|
|
8
8
|
require "oj"
|
9
9
|
|
10
10
|
require_relative "../benchmarking_support"
|
11
|
-
require_relative "../../lib/
|
11
|
+
require_relative "../../lib/panko_serializer"
|
12
12
|
|
13
13
|
def assert(type_name, from, to)
|
14
14
|
raise "#{type_name} - #{from.class} is not equals to #{to.class}" unless from.to_json == to.to_json
|
@@ -25,3 +25,4 @@ def check_if_exists(module_name)
|
|
25
25
|
end
|
26
26
|
|
27
27
|
Time.zone = "UTC"
|
28
|
+
ActiveSupport::Deprecation.behavior = :stderr
|
data/docs/docs/performance.md
CHANGED
@@ -8,15 +8,15 @@ The performance of Panko is measured using microbenchmarks and load testing.
|
|
8
8
|
|
9
9
|
## Microbenchmarks
|
10
10
|
|
11
|
-
The following microbenchmarks are run on MacBook Pro (16-inch, 2021, M1 Max), Ruby 3.
|
12
|
-
demonstrating the performance of ActiveModelSerializers 0.10.13 and Panko 0.
|
11
|
+
The following microbenchmarks are run on MacBook Pro (16-inch, 2021, M1 Max), Ruby 3.2.0 with Rails 7.0.5
|
12
|
+
demonstrating the performance of ActiveModelSerializers 0.10.13 and Panko 0.8.0
|
13
13
|
|
14
14
|
| Benchmark | AMS ip/s | Panko ip/s |
|
15
15
|
| ----------------- | -------- | ---------- |
|
16
|
-
| Simple_Posts_2300 | 11.
|
17
|
-
| Simple_Posts_50 |
|
18
|
-
| HasOne_Posts_2300 | 5.
|
19
|
-
| HasOne_Posts_50 |
|
16
|
+
| Simple_Posts_2300 | 11.72 | 523.05 |
|
17
|
+
| Simple_Posts_50 | 557.29 | 23,011.9 |
|
18
|
+
| HasOne_Posts_2300 | 5.91 | 233.44 |
|
19
|
+
| HasOne_Posts_50 | 285.8 | 10,362.79 |
|
20
20
|
|
21
21
|
## Real-world benchmark
|
22
22
|
|
data/docs/package-lock.json
CHANGED
@@ -2895,7 +2895,7 @@
|
|
2895
2895
|
"node_modules/cacheable-request": {
|
2896
2896
|
"version": "2.1.4",
|
2897
2897
|
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
|
2898
|
-
"integrity": "
|
2898
|
+
"integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==",
|
2899
2899
|
"dev": true,
|
2900
2900
|
"dependencies": {
|
2901
2901
|
"clone-response": "1.0.2",
|
@@ -3673,7 +3673,7 @@
|
|
3673
3673
|
"node_modules/crowdin-cli": {
|
3674
3674
|
"version": "0.3.0",
|
3675
3675
|
"resolved": "https://registry.npmjs.org/crowdin-cli/-/crowdin-cli-0.3.0.tgz",
|
3676
|
-
"integrity": "
|
3676
|
+
"integrity": "sha512-s1vSRqWalCqd+vW7nF4oZo1a2pMpEgwIiwVlPRD0HmGY3HjJwQKXqZ26NpX5qCDVN8UdEsScy+2jle0PPQBmAg==",
|
3677
3677
|
"dev": true,
|
3678
3678
|
"dependencies": {
|
3679
3679
|
"request": "^2.53.0",
|
@@ -5254,19 +5254,25 @@
|
|
5254
5254
|
"dev": true
|
5255
5255
|
},
|
5256
5256
|
"node_modules/fast-xml-parser": {
|
5257
|
-
"version": "
|
5258
|
-
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-
|
5259
|
-
"integrity": "sha512-
|
5257
|
+
"version": "4.2.4",
|
5258
|
+
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.4.tgz",
|
5259
|
+
"integrity": "sha512-fbfMDvgBNIdDJLdLOwacjFAPYt67tr31H9ZhWSm45CDAxvd0I6WTlSOUo7K2P/K5sA5JgMKG64PI3DMcaFdWpQ==",
|
5260
5260
|
"dev": true,
|
5261
|
+
"funding": [
|
5262
|
+
{
|
5263
|
+
"type": "paypal",
|
5264
|
+
"url": "https://paypal.me/naturalintelligence"
|
5265
|
+
},
|
5266
|
+
{
|
5267
|
+
"type": "github",
|
5268
|
+
"url": "https://github.com/sponsors/NaturalIntelligence"
|
5269
|
+
}
|
5270
|
+
],
|
5261
5271
|
"dependencies": {
|
5262
|
-
"strnum": "^1.0.
|
5272
|
+
"strnum": "^1.0.5"
|
5263
5273
|
},
|
5264
5274
|
"bin": {
|
5265
|
-
"
|
5266
|
-
},
|
5267
|
-
"funding": {
|
5268
|
-
"type": "paypal",
|
5269
|
-
"url": "https://paypal.me/naturalintelligence"
|
5275
|
+
"fxparser": "src/cli/cli.js"
|
5270
5276
|
}
|
5271
5277
|
},
|
5272
5278
|
"node_modules/fastq": {
|
@@ -7040,12 +7046,12 @@
|
|
7040
7046
|
"dev": true
|
7041
7047
|
},
|
7042
7048
|
"node_modules/is-svg": {
|
7043
|
-
"version": "4.
|
7044
|
-
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.
|
7045
|
-
"integrity": "sha512-
|
7049
|
+
"version": "4.4.0",
|
7050
|
+
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.4.0.tgz",
|
7051
|
+
"integrity": "sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==",
|
7046
7052
|
"dev": true,
|
7047
7053
|
"dependencies": {
|
7048
|
-
"fast-xml-parser": "^
|
7054
|
+
"fast-xml-parser": "^4.1.3"
|
7049
7055
|
},
|
7050
7056
|
"engines": {
|
7051
7057
|
"node": ">=6"
|
@@ -7248,13 +7254,10 @@
|
|
7248
7254
|
"dev": true
|
7249
7255
|
},
|
7250
7256
|
"node_modules/json5": {
|
7251
|
-
"version": "2.2.
|
7252
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.
|
7253
|
-
"integrity": "sha512-
|
7257
|
+
"version": "2.2.3",
|
7258
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
7259
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
7254
7260
|
"dev": true,
|
7255
|
-
"dependencies": {
|
7256
|
-
"minimist": "^1.2.5"
|
7257
|
-
},
|
7258
7261
|
"bin": {
|
7259
7262
|
"json5": "lib/cli.js"
|
7260
7263
|
},
|
@@ -11367,9 +11370,9 @@
|
|
11367
11370
|
}
|
11368
11371
|
},
|
11369
11372
|
"node_modules/strnum": {
|
11370
|
-
"version": "1.0.
|
11371
|
-
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.
|
11372
|
-
"integrity": "sha512-
|
11373
|
+
"version": "1.0.5",
|
11374
|
+
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
|
11375
|
+
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
|
11373
11376
|
"dev": true
|
11374
11377
|
},
|
11375
11378
|
"node_modules/stylehacks": {
|
@@ -14480,7 +14483,7 @@
|
|
14480
14483
|
"cacheable-request": {
|
14481
14484
|
"version": "2.1.4",
|
14482
14485
|
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz",
|
14483
|
-
"integrity": "
|
14486
|
+
"integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==",
|
14484
14487
|
"dev": true,
|
14485
14488
|
"requires": {
|
14486
14489
|
"clone-response": "1.0.2",
|
@@ -15100,7 +15103,7 @@
|
|
15100
15103
|
"crowdin-cli": {
|
15101
15104
|
"version": "0.3.0",
|
15102
15105
|
"resolved": "https://registry.npmjs.org/crowdin-cli/-/crowdin-cli-0.3.0.tgz",
|
15103
|
-
"integrity": "
|
15106
|
+
"integrity": "sha512-s1vSRqWalCqd+vW7nF4oZo1a2pMpEgwIiwVlPRD0HmGY3HjJwQKXqZ26NpX5qCDVN8UdEsScy+2jle0PPQBmAg==",
|
15104
15107
|
"dev": true,
|
15105
15108
|
"requires": {
|
15106
15109
|
"request": "^2.53.0",
|
@@ -16362,12 +16365,12 @@
|
|
16362
16365
|
"dev": true
|
16363
16366
|
},
|
16364
16367
|
"fast-xml-parser": {
|
16365
|
-
"version": "
|
16366
|
-
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-
|
16367
|
-
"integrity": "sha512-
|
16368
|
+
"version": "4.2.4",
|
16369
|
+
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.2.4.tgz",
|
16370
|
+
"integrity": "sha512-fbfMDvgBNIdDJLdLOwacjFAPYt67tr31H9ZhWSm45CDAxvd0I6WTlSOUo7K2P/K5sA5JgMKG64PI3DMcaFdWpQ==",
|
16368
16371
|
"dev": true,
|
16369
16372
|
"requires": {
|
16370
|
-
"strnum": "^1.0.
|
16373
|
+
"strnum": "^1.0.5"
|
16371
16374
|
}
|
16372
16375
|
},
|
16373
16376
|
"fastq": {
|
@@ -17721,12 +17724,12 @@
|
|
17721
17724
|
"dev": true
|
17722
17725
|
},
|
17723
17726
|
"is-svg": {
|
17724
|
-
"version": "4.
|
17725
|
-
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.
|
17726
|
-
"integrity": "sha512-
|
17727
|
+
"version": "4.4.0",
|
17728
|
+
"resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.4.0.tgz",
|
17729
|
+
"integrity": "sha512-v+AgVwiK5DsGtT9ng+m4mClp6zDAmwrW8nZi6Gg15qzvBnRWWdfWA1TGaXyCDnWq5g5asofIgMVl3PjKxvk1ug==",
|
17727
17730
|
"dev": true,
|
17728
17731
|
"requires": {
|
17729
|
-
"fast-xml-parser": "^
|
17732
|
+
"fast-xml-parser": "^4.1.3"
|
17730
17733
|
}
|
17731
17734
|
},
|
17732
17735
|
"is-symbol": {
|
@@ -17886,13 +17889,10 @@
|
|
17886
17889
|
"dev": true
|
17887
17890
|
},
|
17888
17891
|
"json5": {
|
17889
|
-
"version": "2.2.
|
17890
|
-
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.
|
17891
|
-
"integrity": "sha512-
|
17892
|
-
"dev": true
|
17893
|
-
"requires": {
|
17894
|
-
"minimist": "^1.2.5"
|
17895
|
-
}
|
17892
|
+
"version": "2.2.3",
|
17893
|
+
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
|
17894
|
+
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
|
17895
|
+
"dev": true
|
17896
17896
|
},
|
17897
17897
|
"jsonfile": {
|
17898
17898
|
"version": "6.1.0",
|
@@ -21222,9 +21222,9 @@
|
|
21222
21222
|
}
|
21223
21223
|
},
|
21224
21224
|
"strnum": {
|
21225
|
-
"version": "1.0.
|
21226
|
-
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.
|
21227
|
-
"integrity": "sha512-
|
21225
|
+
"version": "1.0.5",
|
21226
|
+
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
|
21227
|
+
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
|
21228
21228
|
"dev": true
|
21229
21229
|
},
|
21230
21230
|
"stylehacks": {
|
@@ -304,7 +304,7 @@ VALUE is_json_value(VALUE value) {
|
|
304
304
|
return Qfalse;
|
305
305
|
}
|
306
306
|
|
307
|
-
VALUE type_cast(VALUE type_metadata, VALUE value, VALUE* isJson) {
|
307
|
+
VALUE type_cast(VALUE type_metadata, VALUE value, volatile VALUE* isJson) {
|
308
308
|
if (value == Qnil || value == Qundef) {
|
309
309
|
return value;
|
310
310
|
}
|
@@ -71,7 +71,8 @@ static struct _TypeCast type_casts[] = {
|
|
71
71
|
|
72
72
|
{NULL, NULL}};
|
73
73
|
|
74
|
-
extern VALUE type_cast(VALUE type_metadata, VALUE value,
|
74
|
+
extern VALUE type_cast(VALUE type_metadata, VALUE value,
|
75
|
+
volatile VALUE* isJson);
|
75
76
|
void panko_init_type_cast(VALUE mPanko);
|
76
77
|
|
77
78
|
// Introduced in ruby 2.4
|
@@ -29,7 +29,7 @@ void serialize_method_fields(VALUE object, VALUE str_writer,
|
|
29
29
|
return;
|
30
30
|
}
|
31
31
|
|
32
|
-
volatile VALUE method_fields, serializer;
|
32
|
+
volatile VALUE method_fields, serializer, key;
|
33
33
|
long i;
|
34
34
|
|
35
35
|
method_fields = descriptor->method_fields;
|
@@ -43,7 +43,8 @@ void serialize_method_fields(VALUE object, VALUE str_writer,
|
|
43
43
|
|
44
44
|
volatile VALUE result = rb_funcall(serializer, attribute->name_id, 0);
|
45
45
|
if (result != SKIP) {
|
46
|
-
|
46
|
+
key = attr_name_for_serialization(attribute);
|
47
|
+
write_value(str_writer, key, result, Qfalse);
|
47
48
|
}
|
48
49
|
}
|
49
50
|
|
@@ -31,11 +31,12 @@ void association_mark(Association data) {
|
|
31
31
|
}
|
32
32
|
|
33
33
|
static VALUE association_new(int argc, VALUE* argv, VALUE self) {
|
34
|
-
Association association
|
34
|
+
Association association;
|
35
35
|
|
36
36
|
Check_Type(argv[0], T_SYMBOL);
|
37
37
|
Check_Type(argv[1], T_STRING);
|
38
38
|
|
39
|
+
association = ALLOC(struct _Association);
|
39
40
|
association->name_sym = argv[0];
|
40
41
|
association->name_str = argv[1];
|
41
42
|
association->rb_descriptor = argv[2];
|
@@ -26,13 +26,14 @@ void attribute_mark(Attribute data) {
|
|
26
26
|
}
|
27
27
|
|
28
28
|
static VALUE attribute_new(int argc, VALUE* argv, VALUE self) {
|
29
|
-
Attribute attribute
|
29
|
+
Attribute attribute;
|
30
30
|
|
31
31
|
Check_Type(argv[0], T_STRING);
|
32
32
|
if (argv[1] != Qnil) {
|
33
33
|
Check_Type(argv[1], T_STRING);
|
34
34
|
}
|
35
35
|
|
36
|
+
attribute = ALLOC(struct _Attribute);
|
36
37
|
attribute->name_str = argv[0];
|
37
38
|
attribute->name_id = rb_intern_str(attribute->name_str);
|
38
39
|
attribute->alias_name = argv[1];
|
data/lib/panko/serializer.rb
CHANGED
@@ -70,7 +70,7 @@ module Panko
|
|
70
70
|
return if @_descriptor.nil?
|
71
71
|
|
72
72
|
deleted_attr = @_descriptor.attributes.delete(method)
|
73
|
-
@_descriptor.method_fields << Attribute.create(
|
73
|
+
@_descriptor.method_fields << Attribute.create(deleted_attr.name, alias_name: deleted_attr.alias_name) unless deleted_attr.nil?
|
74
74
|
end
|
75
75
|
|
76
76
|
def has_one(name, options = {})
|
data/lib/panko/version.rb
CHANGED
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.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yosi Attias
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: oj
|
@@ -169,7 +169,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
169
|
- !ruby/object:Gem::Version
|
170
170
|
version: '0'
|
171
171
|
requirements: []
|
172
|
-
rubygems_version: 3.
|
172
|
+
rubygems_version: 3.4.6
|
173
173
|
signing_key:
|
174
174
|
specification_version: 4
|
175
175
|
summary: High Performance JSON Serialization for ActiveRecord & Ruby Objects
|