juso 1.0.0 → 1.0.1

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: 912622622f8b9a6866a505f8ba27a1cc21a3073a59ac364942ce6d997baeb875
4
- data.tar.gz: 125f56e1649fad476b076457272349a221ec69f38600bc17f62bf0255902a777
3
+ metadata.gz: a51c9bb514c29a43c32b28bfe8bc8b7e1be09c7cbfaa7f6e06e21c8f75bcc059
4
+ data.tar.gz: 243229044555a5d619327549801d2a6fdcd4b5272ddbb32beadd521e745035b5
5
5
  SHA512:
6
- metadata.gz: cc04ee74481f9fa92988d4e4457eb40929e670a91c95b07171af2358c5f85a77dbd2af2ba846a0bc1c90da13aca85363fba5060b75255e91373fcf964ee5893c
7
- data.tar.gz: 7d51bbec1f134665d4f058c666d64616762e8b86b2981fd94eb03af40a638e71d952e42bdaf1a8216342a4ee644da6f57f7ccba8730b0f4dc6f6672e1ae6e0b9
6
+ metadata.gz: 5d9f185580a6f4537aa41e7c18d4db70a69f2f8c11e4b47af1127df01322c0c1f1612278312910bb06076e6b679efc85906cfcf224a99683a9dfefd81eef9f2d
7
+ data.tar.gz: acf60f8aee9a93f15f2ed461a40b427e10bedf4b10ec273bc7884d7f5f5dd2ab2bb987d3bb550d19d70d4ea5d9bceb1af2619d71f43d29b096e790f3dbd7ef09
@@ -31,3 +31,22 @@ jobs:
31
31
  run: |
32
32
  bundle exec rails db:setup
33
33
  bundle exec rake test
34
+
35
+ benchmark:
36
+ runs-on: ubuntu-latest
37
+ timeout-minutes: 10
38
+
39
+ steps:
40
+ - uses: actions/checkout@v2
41
+
42
+ - name: Set up Ruby
43
+ uses: ruby/setup-ruby@v1
44
+ with:
45
+ ruby-version: 3.0.2
46
+ bundler-cache: true
47
+
48
+ - name: Run benchmark (collection)
49
+ run: ruby benchmark/collection.rb
50
+
51
+ - name: Run benchmark (single)
52
+ run: ruby benchmark/single_resource.rb
data/README.md CHANGED
@@ -89,8 +89,10 @@ juso メソッドは以下のインスタンスしか返してはいけません
89
89
  - False Class
90
90
  - Hash Class
91
91
  - Array Class
92
+ - - ActiveRecord::Relation
92
93
  - Juso::Serializable を include したクラス
93
- - Date / DateTime / ActiveSupport::TimeWithZone
94
+ - Date / DateTime
95
+ - - ActiveSupport::TimeWithZone
94
96
 
95
97
  再帰的に juso の処理が適用されるため、Array の要素や Hash の value も同様のルールが適用されます
96
98
 
@@ -111,8 +113,12 @@ class UserSerializer
111
113
  def juso(context)
112
114
  {
113
115
  id: @user.id,
114
- posts: Juso.wrap(@user.posts, PostSerializer), # use PostSerializer#juso method. Each post passes into PostSerializer object.
115
- team: @user.team, # use Team#juso method
116
+
117
+ # use PostSerializer#juso method. Each post passes into PostSerializer object.
118
+ posts: Juso.wrap(@user.posts, PostSerializer),
119
+
120
+ # use Team#juso method
121
+ team: @user.team,
116
122
  }
117
123
  end
118
124
  end
@@ -0,0 +1,472 @@
1
+ # original: https://github.com/okuramasafumi/alba/blob/main/benchmark/collection.rb
2
+
3
+ # Benchmark script to run varieties of JSON serializers
4
+ # Fetch juso from local, otherwise fetch latest from RubyGems
5
+
6
+ # --- Bundle dependencies ---
7
+
8
+ require "bundler/inline"
9
+
10
+ gemfile(true) do
11
+ source "https://rubygems.org"
12
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
13
+
14
+ gem "active_model_serializers"
15
+ gem "activerecord", "6.1.3"
16
+ gem "alba"
17
+ gem "juso", path: '../'
18
+ gem "benchmark-ips"
19
+ gem "benchmark-memory"
20
+ gem "blueprinter"
21
+ gem "jbuilder"
22
+ gem "jserializer"
23
+ gem "jsonapi-serializer" # successor of fast_jsonapi
24
+ gem "multi_json"
25
+ gem "panko_serializer"
26
+ gem "pg"
27
+ gem "primalize"
28
+ gem "oj"
29
+ gem "representable"
30
+ gem "simple_ams"
31
+ gem "sqlite3"
32
+ end
33
+
34
+ # --- Test data model setup ---
35
+
36
+ require "pg"
37
+ require "active_record"
38
+ require "active_record/connection_adapters/postgresql_adapter"
39
+ require "logger"
40
+ require "oj"
41
+ require "sqlite3"
42
+ Oj.optimize_rails
43
+
44
+ ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
45
+ # ActiveRecord::Base.logger = Logger.new($stdout)
46
+
47
+ ActiveRecord::Schema.define do
48
+ create_table :posts, force: true do |t|
49
+ t.string :body
50
+ end
51
+
52
+ create_table :comments, force: true do |t|
53
+ t.integer :post_id
54
+ t.string :body
55
+ t.integer :commenter_id
56
+ end
57
+
58
+ create_table :users, force: true do |t|
59
+ t.string :name
60
+ end
61
+ end
62
+
63
+ class Post < ActiveRecord::Base
64
+ has_many :comments
65
+ has_many :commenters, through: :comments, class_name: 'User', source: :commenter
66
+
67
+ def attributes
68
+ {id: nil, body: nil, commenter_names: commenter_names}
69
+ end
70
+
71
+ def commenter_names
72
+ commenters.pluck(:name)
73
+ end
74
+ end
75
+
76
+ class Comment < ActiveRecord::Base
77
+ belongs_to :post
78
+ belongs_to :commenter, class_name: 'User'
79
+
80
+ def attributes
81
+ {id: nil, body: nil}
82
+ end
83
+ end
84
+
85
+ class User < ActiveRecord::Base
86
+ has_many :comments
87
+ end
88
+
89
+ # --- Juso serializers ---
90
+
91
+ require "juso"
92
+
93
+ class Comment
94
+ include ::Juso::Serializable
95
+
96
+ def juso(context)
97
+ {id: id, body: body}
98
+ end
99
+ end
100
+
101
+ class Post
102
+ include ::Juso::Serializable
103
+
104
+ def juso(context)
105
+ {id: id, body: body, commenter_names: commenter_names, comments: comments}
106
+ end
107
+ end
108
+
109
+ # --- Alba serializers ---
110
+
111
+ require "alba"
112
+
113
+ class AlbaCommentResource
114
+ include ::Alba::Resource
115
+ attributes :id, :body
116
+ end
117
+
118
+ class AlbaPostResource
119
+ include ::Alba::Resource
120
+ attributes :id, :body
121
+ attribute :commenter_names do |post|
122
+ post.commenters.pluck(:name)
123
+ end
124
+ many :comments, resource: AlbaCommentResource
125
+ end
126
+
127
+ # --- ActiveModelSerializer serializers ---
128
+
129
+ require "active_model_serializers"
130
+
131
+ ActiveModelSerializers.logger = Logger.new(nil)
132
+
133
+ class AMSCommentSerializer < ActiveModel::Serializer
134
+ attributes :id, :body
135
+ end
136
+
137
+ class AMSPostSerializer < ActiveModel::Serializer
138
+ attributes :id, :body
139
+ attribute :commenter_names
140
+ has_many :comments, serializer: AMSCommentSerializer
141
+
142
+ def commenter_names
143
+ object.commenters.pluck(:name)
144
+ end
145
+ end
146
+
147
+ # --- Blueprint serializers ---
148
+
149
+ require "blueprinter"
150
+
151
+ class CommentBlueprint < Blueprinter::Base
152
+ fields :id, :body
153
+ end
154
+
155
+ class PostBlueprint < Blueprinter::Base
156
+ fields :id, :body, :commenter_names
157
+ association :comments, blueprint: CommentBlueprint
158
+
159
+ def commenter_names
160
+ commenters.pluck(:name)
161
+ end
162
+ end
163
+
164
+ # --- JBuilder serializers ---
165
+
166
+ require "jbuilder"
167
+
168
+ class Post
169
+ def to_builder
170
+ Jbuilder.new do |post|
171
+ post.call(self, :id, :body, :commenter_names, :comments)
172
+ end
173
+ end
174
+
175
+ def commenter_names
176
+ commenters.pluck(:name)
177
+ end
178
+ end
179
+
180
+ class Comment
181
+ def to_builder
182
+ Jbuilder.new do |comment|
183
+ comment.call(self, :id, :body)
184
+ end
185
+ end
186
+ end
187
+
188
+ # --- Jserializer serializers ---
189
+
190
+ require 'jserializer'
191
+
192
+ class JserializerCommentSerializer < Jserializer::Base
193
+ attributes :id, :body
194
+ end
195
+
196
+ class JserializerPostSerializer < Jserializer::Base
197
+ attributes :id, :body, :commenter_names
198
+ has_many :comments, serializer: JserializerCommentSerializer
199
+ def commenter_names
200
+ object.commenters.pluck(:name)
201
+ end
202
+ end
203
+
204
+ # --- JSONAPI:Serializer serializers / (successor of fast_jsonapi) ---
205
+
206
+ class JsonApiStandardCommentSerializer
207
+ include JSONAPI::Serializer
208
+
209
+ attribute :id
210
+ attribute :body
211
+ end
212
+
213
+ class JsonApiStandardPostSerializer
214
+ include JSONAPI::Serializer
215
+
216
+ # set_type :post # optional
217
+ attribute :id
218
+ attribute :body
219
+ attribute :commenter_names
220
+
221
+ attribute :comments do |post|
222
+ post.comments.map { |comment| JsonApiSameFormatCommentSerializer.new(comment) }
223
+ end
224
+ end
225
+
226
+ # --- JSONAPI:Serializer serializers that format the code the same flat way as the other gems here ---
227
+
228
+ # code to convert from JSON:API output to "flat" JSON, like the other serializers build
229
+ class JsonApiSameFormatSerializer
230
+ include JSONAPI::Serializer
231
+
232
+ def as_json(*_options)
233
+ hash = serializable_hash
234
+
235
+ if hash[:data].is_a? Hash
236
+ hash[:data][:attributes]
237
+
238
+ elsif hash[:data].is_a? Array
239
+ hash[:data].pluck(:attributes)
240
+
241
+ elsif hash[:data].nil?
242
+ { }
243
+
244
+ else
245
+ raise "unexpected data type #{hash[:data].class}"
246
+ end
247
+ end
248
+ end
249
+
250
+ class JsonApiSameFormatCommentSerializer < JsonApiSameFormatSerializer
251
+ attribute :id
252
+ attribute :body
253
+ end
254
+
255
+ class JsonApiSameFormatPostSerializer < JsonApiSameFormatSerializer
256
+ attribute :id
257
+ attribute :body
258
+ attribute :commenter_names
259
+
260
+ attribute :comments do |post|
261
+ post.comments.map { |comment| JsonApiSameFormatCommentSerializer.new(comment) }
262
+ end
263
+ end
264
+
265
+ # --- Panko serializers ---
266
+ #
267
+
268
+ require "panko_serializer"
269
+
270
+ class PankoCommentSerializer < Panko::Serializer
271
+ attributes :id, :body
272
+ end
273
+
274
+
275
+ class PankoPostSerializer < Panko::Serializer
276
+ attributes :id, :body, :commenter_names
277
+
278
+ has_many :comments, serializer: PankoCommentSerializer
279
+
280
+ def commenter_names
281
+ object.comments.pluck(:name)
282
+ end
283
+ end
284
+
285
+ # --- Primalize serializers ---
286
+ #
287
+ class PrimalizeCommentResource < Primalize::Single
288
+ attributes id: integer, body: string
289
+ end
290
+
291
+ class PrimalizePostResource < Primalize::Single
292
+ alias post object
293
+
294
+ attributes(
295
+ id: integer,
296
+ body: string,
297
+ comments: array(primalize(PrimalizeCommentResource)),
298
+ commenter_names: array(string),
299
+ )
300
+
301
+ def commenter_names
302
+ post.commenters.pluck(:name)
303
+ end
304
+ end
305
+
306
+ class PrimalizePostsResource < Primalize::Many
307
+ attributes posts: enumerable(PrimalizePostResource)
308
+ end
309
+
310
+ # --- Representable serializers ---
311
+
312
+ require "representable"
313
+
314
+ class CommentRepresenter < Representable::Decorator
315
+ include Representable::JSON
316
+
317
+ property :id
318
+ property :body
319
+ end
320
+
321
+ class PostsRepresenter < Representable::Decorator
322
+ include Representable::JSON::Collection
323
+
324
+ items class: Post do
325
+ property :id
326
+ property :body
327
+ property :commenter_names
328
+ collection :comments
329
+ end
330
+
331
+ def commenter_names
332
+ commenters.pluck(:name)
333
+ end
334
+ end
335
+
336
+ # --- SimpleAMS serializers ---
337
+
338
+ require "simple_ams"
339
+
340
+ class SimpleAMSCommentSerializer
341
+ include SimpleAMS::DSL
342
+
343
+ attributes :id, :body
344
+ end
345
+
346
+ class SimpleAMSPostSerializer
347
+ include SimpleAMS::DSL
348
+
349
+ attributes :id, :body
350
+ attribute :commenter_names
351
+ has_many :comments, serializer: SimpleAMSCommentSerializer
352
+
353
+ def commenter_names
354
+ object.commenters.pluck(:name)
355
+ end
356
+ end
357
+
358
+ # --- Test data creation ---
359
+
360
+ 100.times do |i|
361
+ post = Post.create!(body: "post#{i}")
362
+ user1 = User.create!(name: "John#{i}")
363
+ user2 = User.create!(name: "Jane#{i}")
364
+ 10.times do |n|
365
+ post.comments.create!(commenter: user1, body: "Comment1_#{i}_#{n}")
366
+ post.comments.create!(commenter: user2, body: "Comment2_#{i}_#{n}")
367
+ end
368
+ end
369
+
370
+ posts = Post.all.to_a
371
+
372
+ # --- Store the serializers in procs ---
373
+
374
+ alba = Proc.new { AlbaPostResource.new(posts).serialize }
375
+ alba_inline = Proc.new do
376
+ Alba.serialize(posts) do
377
+ attributes :id, :body
378
+ attribute :commenter_names do |post|
379
+ post.commenters.pluck(:name)
380
+ end
381
+ many :comments do
382
+ attributes :id, :body
383
+ end
384
+ end
385
+ end
386
+
387
+ juso = Proc.new do
388
+ Juso.generate(posts)
389
+ end
390
+
391
+ ams = Proc.new { ActiveModelSerializers::SerializableResource.new(posts, {}).as_json }
392
+ blueprinter = Proc.new { PostBlueprint.render(posts) }
393
+ jbuilder = Proc.new do
394
+ Jbuilder.new do |json|
395
+ json.array!(posts) do |post|
396
+ json.post post.to_builder
397
+ end
398
+ end.target!
399
+ end
400
+ jserializer = Proc.new { JserializerPostSerializer.new(posts, is_collection: true).to_json }
401
+ jsonapi = proc { JsonApiStandardPostSerializer.new(posts).to_json }
402
+ jsonapi_same_format = proc { JsonApiSameFormatPostSerializer.new(posts).to_json }
403
+ panko = proc { Panko::ArraySerializer.new(posts, each_serializer: PankoPostSerializer).to_json }
404
+ primalize = proc { PrimalizePostsResource.new(posts: posts).to_json }
405
+ rails = Proc.new do
406
+ ActiveSupport::JSON.encode(posts.map{ |post| post.serializable_hash(include: :comments) })
407
+ end
408
+ representable = Proc.new { PostsRepresenter.new(posts).to_json }
409
+ simple_ams = Proc.new { SimpleAMS::Renderer::Collection.new(posts, serializer: SimpleAMSPostSerializer).to_json }
410
+
411
+ # --- Execute the serializers to check their output ---
412
+
413
+ puts "Serializer outputs ----------------------------------"
414
+ {
415
+ alba: alba,
416
+ alba_inline: alba_inline,
417
+ juso: juso,
418
+ ams: ams,
419
+ blueprinter: blueprinter,
420
+ jbuilder: jbuilder, # different order
421
+ jserializer: jserializer,
422
+ jsonapi: jsonapi, # nested JSON:API format
423
+ jsonapi_same_format: jsonapi_same_format,
424
+ panko: panko,
425
+ primalize: primalize,
426
+ rails: rails,
427
+ representable: representable,
428
+ simple_ams: simple_ams,
429
+ }.each { |name, serializer| puts "#{name.to_s.ljust(24, ' ')} #{serializer.call}" }
430
+
431
+ # --- Run the benchmarks ---
432
+
433
+ require 'benchmark/ips'
434
+ Benchmark.ips do |x|
435
+ x.report(:alba, &alba)
436
+ x.report(:alba_inline, &alba_inline)
437
+ x.report(:juso, &juso)
438
+ x.report(:ams, &ams)
439
+ x.report(:blueprinter, &blueprinter)
440
+ x.report(:jbuilder, &jbuilder)
441
+ x.report(:jserializer, &jserializer)
442
+ x.report(:jsonapi, &jsonapi)
443
+ x.report(:jsonapi_same_format, &jsonapi_same_format)
444
+ x.report(:panko, &panko)
445
+ x.report(:primalize, &primalize)
446
+ x.report(:rails, &rails)
447
+ x.report(:representable, &representable)
448
+ x.report(:simple_ams, &simple_ams)
449
+
450
+ x.compare!
451
+ end
452
+
453
+
454
+ require 'benchmark/memory'
455
+ Benchmark.memory do |x|
456
+ x.report(:alba, &alba)
457
+ x.report(:alba_inline, &alba_inline)
458
+ x.report(:juso, &juso)
459
+ x.report(:ams, &ams)
460
+ x.report(:blueprinter, &blueprinter)
461
+ x.report(:jbuilder, &jbuilder)
462
+ x.report(:jserializer, &jserializer)
463
+ x.report(:jsonapi, &jsonapi)
464
+ x.report(:jsonapi_same_format, &jsonapi_same_format)
465
+ x.report(:panko, &panko)
466
+ x.report(:primalize, &primalize)
467
+ x.report(:rails, &rails)
468
+ x.report(:representable, &representable)
469
+ x.report(:simple_ams, &simple_ams)
470
+
471
+ x.compare!
472
+ end
@@ -1,7 +1,7 @@
1
1
  # original from https://github.com/okuramasafumi/alba/blob/main/benchmark/single_resource.rb
2
2
 
3
3
  # Benchmark script to run varieties of JSON serializers
4
- # Fetch Alba from local, otherwise fetch latest from RubyGems
4
+ # Fetch juso from local, otherwise fetch latest from RubyGems
5
5
 
6
6
  # --- Bundle dependencies ---
7
7
 
@@ -22,10 +22,10 @@ gemfile(true) do
22
22
  gem "jserializer"
23
23
  gem "jsonapi-serializer" # successor of fast_jsonapi
24
24
  gem "multi_json"
25
- # gem "panko_serializer"
26
- # gem "pg"
25
+ gem "panko_serializer"
26
+ gem "pg"
27
27
  gem "primalize"
28
- # gem "oj"
28
+ gem "oj"
29
29
  gem "representable"
30
30
  gem "simple_ams"
31
31
  gem "sqlite3"
@@ -33,14 +33,14 @@ end
33
33
 
34
34
  # --- Test data model setup ---
35
35
 
36
- # require "pg"
36
+ require "pg"
37
37
  require "active_record"
38
- # require "active_record/connection_adapters/postgresql_adapter"
38
+ require "active_record/connection_adapters/postgresql_adapter"
39
39
  require "active_record/connection_adapters/sqlite3_adapter"
40
40
  require "logger"
41
- # require "oj"
41
+ require "oj"
42
42
  require "sqlite3"
43
- # Oj.optimize_rails
43
+ Oj.optimize_rails
44
44
 
45
45
  ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
46
46
  # ActiveRecord::Base.logger = Logger.new($stdout)
@@ -264,22 +264,22 @@ end
264
264
 
265
265
  # --- Panko serializers ---
266
266
  #
267
- # require "panko_serializer"
268
- #
269
- # class PankoCommentSerializer < Panko::Serializer
270
- # attributes :id, :body
271
- # end
272
- #
273
- #
274
- # class PankoPostSerializer < Panko::Serializer
275
- # attributes :id, :body, :commenter_names
276
- #
277
- # has_many :comments, serializer: PankoCommentSerializer
278
- #
279
- # def commenter_names
280
- # object.comments.pluck(:name)
281
- # end
282
- # end
267
+ require "panko_serializer"
268
+
269
+ class PankoCommentSerializer < Panko::Serializer
270
+ attributes :id, :body
271
+ end
272
+
273
+
274
+ class PankoPostSerializer < Panko::Serializer
275
+ attributes :id, :body, :commenter_names
276
+
277
+ has_many :comments, serializer: PankoCommentSerializer
278
+
279
+ def commenter_names
280
+ object.comments.pluck(:name)
281
+ end
282
+ end
283
283
 
284
284
  # --- Primalize serializers ---
285
285
  #
@@ -361,8 +361,6 @@ post.reload
361
361
 
362
362
  juso = Proc.new do
363
363
  Juso.generate(post)
364
- rescue
365
- binding.irb
366
364
  end
367
365
 
368
366
  alba = Proc.new { AlbaPostResource.new(post).serialize }
@@ -383,8 +381,8 @@ jbuilder = Proc.new { post.to_builder.target! }
383
381
  jserializer = Proc.new { JserializerPostSerializer.new(post).to_json }
384
382
  jsonapi = proc { JsonApiStandardPostSerializer.new(post).to_json }
385
383
  jsonapi_same_format = proc { JsonApiSameFormatPostSerializer.new(post).to_json }
386
- # panko = proc { PankoPostSerializer.new.serialize_to_json(post) }
387
- panko = proc { 'nop' }
384
+ panko = proc { PankoPostSerializer.new.serialize_to_json(post) }
385
+ # panko = proc { 'nop' }
388
386
  primalize = proc { PrimalizePostResource.new(post).to_json }
389
387
  rails = Proc.new { ActiveSupport::JSON.encode(post.serializable_hash(include: :comments)) }
390
388
  representable = Proc.new { PostRepresenter.new(post).to_json }
data/lib/juso/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Juso
4
- VERSION = "1.0.0"
4
+ VERSION = "1.0.1"
5
5
  end
data/lib/juso.rb CHANGED
@@ -27,11 +27,11 @@ module Juso
27
27
  end
28
28
 
29
29
  # Juso.generate generates json string
30
- def self.generate(object, context: Context.new)
30
+ def self.generate(object, context = Context.new)
31
31
  JSON.fast_generate(_g(object, context))
32
32
  end
33
33
 
34
- # generate returns hash (as json)
34
+ # generate returns object (as json)
35
35
  def self._g(object, context)
36
36
  case object
37
37
  when nil, Numeric, String, true, false
@@ -46,7 +46,7 @@ module Juso
46
46
  when *collection_classes
47
47
  return object.to_a.map { |o| _g(o, context) }
48
48
  when *date_classes
49
- return object.iso8601
49
+ return object.iso8601(context.options[:juso_time_n_digits] || 0)
50
50
  else
51
51
  # TODO: fallback to respond_to?(:juso) and warn?
52
52
 
@@ -87,5 +87,5 @@ module Juso
87
87
  end
88
88
  end
89
89
 
90
- private_class_method :default_collection_classes, :default_date_classes, :_g
90
+ private_class_method :default_collection_classes, :default_date_classes
91
91
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: juso
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - ykpythemind
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-11-27 00:00:00.000000000 Z
11
+ date: 2021-12-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -40,6 +40,7 @@ files:
40
40
  - LICENSE.txt
41
41
  - README.md
42
42
  - Rakefile
43
+ - benchmark/collection.rb
43
44
  - benchmark/single_resource.rb
44
45
  - bin/console
45
46
  - bin/setup