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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c07649ad9566fb8f9ef1088a20bff7b93f76b5d6295d0505b81bca45ed47788c
4
- data.tar.gz: a9d3736b9ef189d9087f036bcf9c4977ae950ffbb1e3dfb1386ec138fdcef101
3
+ metadata.gz: 00eff973f0a008e93332c9a83da475001203d49479126e90311577aa8a3f4fd5
4
+ data.tar.gz: e94e6290b5103ddb0481110cf901d69da86b6831cc5ed59f95b94abf810dac29
5
5
  SHA512:
6
- metadata.gz: 609057962ee4975e8e392da3d762421e819f1bbac4d2511c156384732d9359922edd386d833353d112edea334f66c6a4f44f0dc593b16a8b1e62b2c64196f4df
7
- data.tar.gz: 18d84743b9f94f59db2bffd7716ecd6e796da1d3c135b401d5c8f0ae258f3c74276706794703d3841663add5cec70fee97ccbf54561688ee9247cdd11bc6d115
6
+ metadata.gz: b87365560a2953a4f5b4027672b6f1721f89cc199345b82ed4ebb421263bfcb91f621651184e0d0c0f88c77f82d45acef61a061a0a863c21e7c2b066f57691be
7
+ data.tar.gz: 58c278c92461ef9f6f10ebee1579ad8bd801f6b5395625c982fc8ca1a32ab8e5e59d91527b820ddb9f662eea45df85952f7acf6060a9c9ac216208fac2db4523
@@ -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.10.1
36
+ uses: jidicula/clang-format-action@v4.11.0
38
37
  with:
39
- clang-format-version: "15"
38
+ clang-format-version: "16"
40
39
  check-path: "ext/panko_serializer"
41
- fallback-style: "Google"
40
+ fallback-style: "Google"
@@ -8,8 +8,8 @@ jobs:
8
8
  strategy:
9
9
  fail-fast: false
10
10
  matrix:
11
- ruby: ["2.7", "3.0", "3.1.0", "3.2.0"]
12
- rails: ["6.0.0", "6.1.0", "7.0.0"]
11
+ ruby: ["3.0", "3.1", "3.2"]
12
+ rails: ["6.1.0", "7.0.0"]
13
13
 
14
14
  steps:
15
15
  - uses: actions/checkout@v2
data/Gemfile CHANGED
@@ -20,7 +20,7 @@ group :benchmarks do
20
20
  gem "ruby-prof-flamegraph", platforms: [:mri]
21
21
 
22
22
  gem "benchmark-ips"
23
- gem "active_model_serializers"
23
+ gem "active_model_serializers", "~> 0.10"
24
24
  gem "terminal-table"
25
25
  end
26
26
 
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Panko
2
2
 
3
- ![Build Status](https://github.com/panko-serializer/panko_serializer/workflows/Panko%20Serializer%20CI/badge.svg?branch=github-actions)
3
+ ![Build Status](https://github.com/panko-serializer/panko_serializer/workflows/Panko%20Serializer%20CI/badge.svg?branch=master)
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
- PTY.spawn(cmd) do |stdout, stdin, pid|
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
- desc "Run all benchmarks"
69
- task :benchmarks do
70
- run_benchmarks Dir[File.join(__dir__, "benchmarks", "**", "bm_*")]
71
- end
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 - Benchmarks"
74
- task :bm_type_casts do
75
- run_benchmarks Dir[File.join(__dir__, "benchmarks", "type_casts", "bm_*")], items_count: 0
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 Benchmarks"
79
- task :sanity do
80
- puts Time.now.strftime("%d/%m %H:%M:%S")
81
- puts "=========================="
80
+ desc "Sanity"
81
+ task :sanity do
82
+ puts Time.now.strftime("%d/%m %H:%M:%S")
83
+ puts "=========================="
82
84
 
83
- run_benchmarks [
84
- File.join(__dir__, "benchmarks", "sanity.rb")
85
- ], items_count: 2300
85
+ run_benchmarks [
86
+ File.join(__dir__, "benchmarks", "sanity.rb")
87
+ ], items_count: 2300
86
88
 
87
- puts "\n\n"
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/panko/panko_serializer"
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
@@ -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.1.1 with Rails 7.0.2.3
12
- demonstrating the performance of ActiveModelSerializers 0.10.13 and Panko 0.7.6
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.15 | 489.71 |
17
- | Simple_Posts_50 | 517.85 | 21,366.93 |
18
- | HasOne_Posts_2300 | 5.68 | 229.57 |
19
- | HasOne_Posts_50 | 268.14 | 10,126.33 |
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
 
@@ -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": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=",
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": "sha1-6smYmm/n/qrzMJA5evwYfGe0YZE=",
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": "3.20.0",
5258
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.20.0.tgz",
5259
- "integrity": "sha512-cMQwDJYVDjMPU56DviszewgMKuNzuf4NQSBuDf9RgZ6FKm5QEMxW05Za8lvnuL6moxoeZVUWBlL733WmovvV6g==",
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.3"
5272
+ "strnum": "^1.0.5"
5263
5273
  },
5264
5274
  "bin": {
5265
- "xml2js": "cli.js"
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.3.1",
7044
- "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.3.1.tgz",
7045
- "integrity": "sha512-h2CGs+yPUyvkgTJQS9cJzo9lYK06WgRiXUqBBHtglSzVKAuH4/oWsqk7LGfbSa1hGk9QcZ0SyQtVggvBA8LZXA==",
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": "^3.19.0"
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.0",
7252
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
7253
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
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.3",
11371
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.3.tgz",
11372
- "integrity": "sha512-GVoRjsqAYZkAH16GDzfTuafuwKxzKdaaCQyLaWf37gOP1e2PPbAKWoME1OmO+c4RCKMfNrrPRDLFCNBFU45N/A==",
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": "sha1-DYCIAbY0KtM8kd+dC0TcCbkeXD0=",
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": "sha1-6smYmm/n/qrzMJA5evwYfGe0YZE=",
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": "3.20.0",
16366
- "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.20.0.tgz",
16367
- "integrity": "sha512-cMQwDJYVDjMPU56DviszewgMKuNzuf4NQSBuDf9RgZ6FKm5QEMxW05Za8lvnuL6moxoeZVUWBlL733WmovvV6g==",
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.3"
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.3.1",
17725
- "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-4.3.1.tgz",
17726
- "integrity": "sha512-h2CGs+yPUyvkgTJQS9cJzo9lYK06WgRiXUqBBHtglSzVKAuH4/oWsqk7LGfbSa1hGk9QcZ0SyQtVggvBA8LZXA==",
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": "^3.19.0"
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.0",
17890
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
17891
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
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.3",
21226
- "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.3.tgz",
21227
- "integrity": "sha512-GVoRjsqAYZkAH16GDzfTuafuwKxzKdaaCQyLaWf37gOP1e2PPbAKWoME1OmO+c4RCKMfNrrPRDLFCNBFU45N/A==",
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": {
@@ -85,7 +85,7 @@ struct attributes init_context(VALUE obj) {
85
85
  }
86
86
 
87
87
  VALUE read_attribute(struct attributes attributes_ctx, Attribute attribute,
88
- VALUE* isJson) {
88
+ volatile VALUE* isJson) {
89
89
  volatile VALUE member, value;
90
90
 
91
91
  member = attribute->name_str;
@@ -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, VALUE* isJson);
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
- write_value(str_writer, attribute->name_str, result, Qfalse);
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 = ALLOC(struct _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 = ALLOC(struct _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];
@@ -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(method) unless deleted_attr.nil?
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Panko
4
- VERSION = "0.7.9"
4
+ VERSION = "0.8.0"
5
5
  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.9
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: 2022-12-29 00:00:00.000000000 Z
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.3.7
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