fast_serializer_ruby 0.6.2 → 0.6.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4adafc96834175b06d1d49a72269b461f0d72419286a03e3c6422d145e027672
4
- data.tar.gz: 5422eeac009a270dffbc56a7234b74da8c6a38eb56fbca9a66121f96ee129e3c
3
+ metadata.gz: a8f0ab89ab3ce2f693f4c850057ecbf4a0651dfb82c7de1fccd2142c5788070a
4
+ data.tar.gz: d767dcb5b4e8b21c8ca1b558fed4860cca7ce7062d94dd32b76d57deb16d7263
5
5
  SHA512:
6
- metadata.gz: b6571bed32c87ef3dacb6ad00a6d0054aa547f8afe4f196b1a9186d6d6eedc649aaa81c8f22a72114e74547a9ec8d61a9df0229415ff92370a58c06e3ad3c91b
7
- data.tar.gz: 0567dc3d3513358831e4571833daeb941ebc94660d945240038669e3f2c20deedb99d16337055336b88afe1110b6061800b994ab7fe8f6a40ef54cfd1bfa6c06
6
+ metadata.gz: 0555c28854299014c62e812d3e4c2f9c124ed3d016994202224eea9d8e29188c8c8f7a3f18371f04c892b4dabca2130269fd3212ada2056942c7856d9bbbb042
7
+ data.tar.gz: bf17f9ff6be9eae047392c49d567d9ab246fa088eeeba2c9b90688fc206646b992bb075d6f6024bd73a5e367533d58738bdfc797adf81d9bb14bb0a6eb65f716
@@ -0,0 +1,42 @@
1
+ name: Ruby
2
+
3
+ on:
4
+ push:
5
+ branches: [ master ]
6
+ pull_request:
7
+ branches: [ master ]
8
+
9
+ jobs:
10
+ test:
11
+ runs-on: ubuntu-latest
12
+ strategy:
13
+ matrix:
14
+ ruby-version: ['2.3', '2.4', '2.5', '2.6', '2.7', '3.0', 'jruby']
15
+
16
+ steps:
17
+ - uses: actions/checkout@v2
18
+ - uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
19
+ with:
20
+ ruby-version: ${{ matrix.ruby-version }}
21
+ bundler-cache: true
22
+ - run: bundle exec rspec --tag ~performance:true
23
+
24
+ coverage:
25
+ runs-on: ubuntu-latest
26
+ strategy:
27
+ matrix:
28
+ ruby-version: ['2.7']
29
+ steps:
30
+ - uses: actions/checkout@v2
31
+ - uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
32
+ with:
33
+ ruby-version: ${{ matrix.ruby-version }}
34
+ bundler-cache: true
35
+ - name: Test & publish code coverage
36
+ uses: paambaati/codeclimate-action@v2.7.5
37
+ with:
38
+ coverageCommand: bundle exec rspec --tag ~performance:true
39
+ env:
40
+ CC_TEST_REPORTER_ID: 99325a42b78ef51a9d51574d20dbcd6acdfe75c8568f1433f73b61f17149e05d
41
+ COVERAGE: 1
42
+
data/.gitignore CHANGED
@@ -15,3 +15,4 @@
15
15
  .history
16
16
  /.vscode
17
17
  .rubocop.yml
18
+ Gemfile.lock
data/Gemfile CHANGED
@@ -12,13 +12,13 @@ group :development, :test do
12
12
  end
13
13
 
14
14
  group :test do
15
- gem 'active_model_serializers', '~> 0.10.0'
15
+ gem 'active_model_serializers'
16
16
  gem 'factory_bot'
17
17
  gem 'faker'
18
- gem 'activesupport', '< 6'
18
+ gem 'activesupport'
19
19
  gem 'allocation_stats'
20
- gem 'simplecov', '~> 0.17.1'
21
- gem 'benchmark-memory', '~> 0.1'
22
- gem 'rspec', '~> 3.0'
20
+ gem 'simplecov'
21
+ gem 'benchmark-memory'
22
+ gem 'rspec'
23
23
  gem 'rspec-benchmark'
24
24
  end
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/fast_serializer_ruby.svg)](https://badge.fury.io/rb/fast_serializer_ruby)
2
- [![Build Status](https://travis-ci.org/estepnv/fast_serializer.svg?branch=master)](https://travis-ci.org/estepnv/fast_serializer)
2
+ ![Build Status](https://github.com/estepnv/fast_serializer/actions/workflows/ruby.yml/badge.svg)
3
3
  [![Maintainability](https://api.codeclimate.com/v1/badges/df7897bec85d376709bd/maintainability)](https://codeclimate.com/github/estepnv/fast_serializer/maintainability)
4
4
  [![Test Coverage](https://api.codeclimate.com/v1/badges/df7897bec85d376709bd/test_coverage)](https://codeclimate.com/github/estepnv/fast_serializer/test_coverage)
5
5
 
@@ -106,8 +106,6 @@ schema.serializable_hash
106
106
  }
107
107
  }
108
108
 
109
-
110
-
111
109
  ```
112
110
 
113
111
 
@@ -14,7 +14,6 @@ Gem::Specification.new do |spec|
14
14
  spec.description = 'This library intends to solve such a typical and on the other hand important problem as efficient ruby object to hash transformation.'
15
15
  spec.homepage = 'https://github.com/estepnv/fast_serializer'
16
16
  spec.license = 'MIT'
17
- spec.platform = Gem::Platform::RUBY
18
17
  spec.required_ruby_version = '>= 2.3.0'
19
18
 
20
19
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
@@ -3,7 +3,11 @@
3
3
  module FastSerializer
4
4
  module JsonModel
5
5
  class Attribute < Node
6
- attr_accessor :mixin,
6
+ attr_accessor :key,
7
+ :method,
8
+ :context,
9
+ :opts,
10
+ :mixin,
7
11
  :method_name,
8
12
  :method_arity,
9
13
  :cond,
@@ -11,18 +15,25 @@ module FastSerializer
11
15
  :cond_method_name,
12
16
  :injected
13
17
 
14
- def initialize(*)
15
- super
18
+ def initialize(key, method, opts = {})
19
+ super()
16
20
 
17
- @mixin = nil
18
- @method_name = nil
21
+ @opts = opts || {}
22
+ @injected_methods = Hash.new { |h, method_name| h[method_name] = true }
23
+ @key = key.to_sym
24
+ @method = !method ? key : method
25
+
26
+ @mixin = Module.new
19
27
  @injected = false
20
- @cond_method_name = nil
21
- @cond = nil
22
- @cond = @opts[:if] || @opts[:unless] || @cond
23
28
 
24
- init_with_proc if method.is_a?(Proc)
25
- init_with_cond if !cond.nil? && cond.is_a?(Proc)
29
+ @method_name = @method && !@method.is_a?(Proc) ? @method : nil
30
+ @method_arity = @method.is_a?(Proc) ? [@method.arity, 0].max : nil
31
+ @cond = @opts[:if] || @opts[:unless]
32
+ @cond_method_name = @cond && !@cond.is_a?(Proc) ? @cond : nil
33
+ @cond_arity = @cond.is_a?(Proc) ? [@cond.arity, 0].max : nil
34
+
35
+ init_with_proc if @method.is_a?(Proc)
36
+ init_with_cond if @cond && @cond.is_a?(Proc)
26
37
  end
27
38
 
28
39
  def injectable?
@@ -39,14 +50,14 @@ module FastSerializer
39
50
  # @param context [Hash]
40
51
  # @return [Object]
41
52
  def serialize(resource, params, context)
42
- can_execute_on_mixin = injected && !method_name.nil? && !context.nil?
53
+ can_execute_on_mixin = !!(injected && method_name && @injected_methods.key?(method_name) && context)
43
54
 
44
55
  val = if can_execute_on_mixin
45
56
  call_method_on_context(context, method_name, method_arity, resource, params)
46
57
  elsif method.is_a?(Proc)
47
58
  call_proc_binding_to_context(context, method, method_arity, resource, params)
48
59
  else
49
- resource.public_send(method)
60
+ resource.public_send(method_name)
50
61
  end
51
62
 
52
63
  val.freeze
@@ -59,9 +70,9 @@ module FastSerializer
59
70
  # @param context [Hash]
60
71
  # @return [Boolean]
61
72
  def included?(resource, params, context)
62
- return true if cond.nil?
73
+ return true if !cond
63
74
 
64
- can_execute_on_mixin = injected && !cond_method_name.nil? && !context.nil?
75
+ can_execute_on_mixin = !!(injected && cond_method_name && @injected_methods.key?(cond_method_name) && context)
65
76
 
66
77
  res = if can_execute_on_mixin
67
78
  call_method_on_context(context, cond_method_name, cond_arity, resource, params)
@@ -80,8 +91,7 @@ module FastSerializer
80
91
 
81
92
  def init_with_cond
82
93
  @cond_method_name = "__#{key}_cond__"
83
- @cond_arity = cond.arity.abs
84
- @mixin ||= Module.new
94
+ @injected_methods[@cond_method_name]
85
95
 
86
96
  if RUBY_VERSION <= '2.5.0'
87
97
  @mixin.redefine_method @cond_method_name, &cond
@@ -92,8 +102,7 @@ module FastSerializer
92
102
 
93
103
  def init_with_proc
94
104
  @method_name = "__#{key}__"
95
- @method_arity = method.arity.abs
96
- @mixin = Module.new
105
+ @injected_methods[@method_name]
97
106
 
98
107
  if RUBY_VERSION <= '2.5.0'
99
108
  @mixin.redefine_method @method_name, &method
@@ -3,16 +3,6 @@
3
3
  module FastSerializer
4
4
  module JsonModel
5
5
  class Node
6
- attr_accessor :key, :method, :context
7
-
8
- # @param key [String]
9
- # @param method [String]
10
- # @param opts [Hash]
11
- def initialize(key: nil, method: nil, opts: {}, **_)
12
- @key = key&.to_sym
13
- @method = method || key
14
- @opts = opts || {}
15
- end
16
6
 
17
7
  # @return [Boolean]
18
8
  def injectable?
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
-
3
2
  module FastSerializer
4
3
  module JsonModel
5
4
  class Object < Node
6
5
  attr_accessor :attributes
7
6
 
8
- def initialize(args = {})
7
+ def initialize
9
8
  super
10
9
  @attributes = {}
11
10
  end
@@ -20,7 +19,7 @@ module FastSerializer
20
19
  # @param context [Hash]
21
20
  # @return [Hash]
22
21
  def serialize(resource, params, context)
23
- return if resource.nil?
22
+ return if !resource
24
23
 
25
24
  result = {}
26
25
 
@@ -7,13 +7,13 @@ module FastSerializer
7
7
 
8
8
  # @param serializer [FastSerializer::Schema::Mixin]
9
9
  # @param schema [FastSerializer::Schema]
10
- def initialize(serializer: nil, schema: nil, **)
11
- super
10
+ def initialize(key, method, serializer = nil, schema = nil, opts = {})
11
+ super(key, method, opts)
12
12
 
13
13
  @serializer_klass = serializer
14
14
  @schema = schema
15
15
 
16
- if @serializer_klass.nil? && @schema.nil?
16
+ if !@serializer_klass && !@schema
17
17
  raise ArgumentError, 'must provide serializer or schema'
18
18
  end
19
19
  end
@@ -53,8 +53,7 @@ module FastSerializer
53
53
  end
54
54
 
55
55
  def serialized_json(opts = {})
56
- self.params = params.merge(opts)
57
- self.class.__schema__.serialize_resource_to_json(resource, params, self)
56
+ FastSerializer.config.coder.dump(serializable_hash(opts))
58
57
  end
59
58
 
60
59
  alias as_json serializable_hash
@@ -43,7 +43,7 @@ module FastSerializer
43
43
  def attributes(*attribute_names)
44
44
  attribute_names.each do |attribute_name|
45
45
  serialization_schema.add_attribute(
46
- JsonModel::Attribute.new(key: attribute_name, method: attribute_name)
46
+ JsonModel::Attribute.new(attribute_name, attribute_name)
47
47
  )
48
48
  end
49
49
  end
@@ -57,12 +57,11 @@ module FastSerializer
57
57
  # @param block [Proc] result is used as the attribute value
58
58
  #
59
59
  def attribute(attribute_name, opts = {}, &block)
60
+ method = (opts.is_a?(String) || opts.is_a?(Symbol)) ? opts : block
61
+ opts = opts.is_a?(Hash) ? opts : {}
62
+
60
63
  serialization_schema.add_attribute(
61
- JsonModel::Attribute.new(
62
- key: attribute_name,
63
- method: block,
64
- opts: opts
65
- )
64
+ JsonModel::Attribute.new(attribute_name, method, opts)
66
65
  )
67
66
  end
68
67
 
@@ -76,12 +75,14 @@ module FastSerializer
76
75
  # @option opts [FastSerializer::Schema] :schema
77
76
  #
78
77
  def has_one(attribute_name, opts = {})
79
- serialization_schema.add_attribute JsonModel::HasOneRelationship.new(
80
- key: opts.delete(:key) || attribute_name,
81
- method: opts.delete(:method) || attribute_name,
82
- opts: opts,
83
- schema: opts.delete(:schema),
84
- serializer: opts.delete(:serializer)
78
+ serialization_schema.add_attribute(
79
+ JsonModel::HasOneRelationship.new(
80
+ opts.delete(:key) || attribute_name,
81
+ opts.delete(:method) || attribute_name,
82
+ opts.delete(:serializer),
83
+ opts.delete(:schema),
84
+ opts,
85
+ )
85
86
  )
86
87
  end
87
88
 
@@ -92,11 +93,11 @@ module FastSerializer
92
93
  def has_many(attribute_name, opts = {})
93
94
  serialization_schema.add_attribute(
94
95
  JsonModel::HasManyRelationship.new(
95
- key: opts.delete(:key) || attribute_name,
96
- method: opts.delete(:method) || attribute_name,
97
- opts: opts,
98
- schema: opts.delete(:schema),
99
- serializer: opts.delete(:serializer)
96
+ opts.delete(:key) || attribute_name,
97
+ opts.delete(:method) || attribute_name,
98
+ opts.delete(:serializer),
99
+ opts.delete(:schema),
100
+ opts,
100
101
  )
101
102
  )
102
103
  end
@@ -106,11 +107,11 @@ module FastSerializer
106
107
  def list(attribute_name, opts = {})
107
108
  serialization_schema.add_attribute(
108
109
  JsonModel::Array.new(
109
- key: attribute_name,
110
- method: attribute_name,
111
- opts: opts,
112
- schema: opts.delete(:schema),
113
- serializer: opts.delete(:serializer)
110
+ attribute_name,
111
+ attribute_name,
112
+ opts.delete(:serializer),
113
+ opts.delete(:schema),
114
+ opts,
114
115
  )
115
116
  )
116
117
  end
@@ -135,10 +136,11 @@ module FastSerializer
135
136
  _params_dup = FastSerializer::Utils.symbolize_keys(self.params)
136
137
  meta = _params_dup.delete(:meta)
137
138
 
138
- is_collection = if params.key?(:is_collection)
139
+ is_collection = if _params_dup.key?(:is_collection)
140
+ _params_dup.delete(:is_collection)
139
141
  params.delete(:is_collection)
140
142
  else
141
- resource.respond_to?(:size) && !resource.respond_to?(:each_pair)
143
+ resource.respond_to?(:each) && !resource.respond_to?(:each_pair)
142
144
  end
143
145
 
144
146
  root = (_root || _params_dup.delete(:root))
@@ -149,13 +151,11 @@ module FastSerializer
149
151
  # need to bind context
150
152
  resource.map { |entry| context.class.new(entry, _params_dup).serializable_hash }
151
153
  else
152
- JsonModel::Array.new(schema: serialization_schema).serialize(resource, _params_dup, context)
154
+ JsonModel::Array.new(:base, :base, nil, serialization_schema).serialize(resource, _params_dup, context)
153
155
  end
154
156
 
155
157
  else
156
-
157
158
  serialization_schema.serialize(resource, _params_dup, context)
158
-
159
159
  end
160
160
 
161
161
  res = { root => res } if root && !root.empty?
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module FastSerializer
4
- VERSION = '0.6.2'
4
+ VERSION = '0.6.7'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast_serializer_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.6.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeny Stepanov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-17 00:00:00.000000000 Z
11
+ date: 2021-11-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: This library intends to solve such a typical and on the other hand important
14
14
  problem as efficient ruby object to hash transformation.
@@ -18,12 +18,11 @@ executables: []
18
18
  extensions: []
19
19
  extra_rdoc_files: []
20
20
  files:
21
+ - ".github/workflows/ruby.yml"
21
22
  - ".gitignore"
22
- - ".travis.yml"
23
23
  - CHANGELOG.md
24
24
  - CODE_OF_CONDUCT.md
25
25
  - Gemfile
26
- - Gemfile.lock
27
26
  - LICENSE.txt
28
27
  - README.md
29
28
  - Rakefile
@@ -66,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
66
65
  - !ruby/object:Gem::Version
67
66
  version: '0'
68
67
  requirements: []
69
- rubygems_version: 3.1.2
68
+ rubygems_version: 3.1.6
70
69
  signing_key:
71
70
  specification_version: 4
72
71
  summary: fast_serializer is a lightweight ruby objects serializer.
data/.travis.yml DELETED
@@ -1,40 +0,0 @@
1
- sudo: false
2
-
3
- language: ruby
4
-
5
- rvm:
6
- - 2.3
7
- - 2.4
8
- - 2.5
9
- - 2.6
10
- - 2.7
11
- - jruby-9.2.0.0
12
- - ruby-head
13
- - jruby-head
14
-
15
- matrix:
16
- allow_failures:
17
- - rvm: jruby-9.2.0.0
18
- - rvm: ruby-head
19
- - rvm: jruby-head
20
-
21
- before_install:
22
- - yes | gem update --system --force
23
- - gem install bundler
24
-
25
- before_script:
26
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
27
- - chmod +x ./cc-test-reporter
28
- - ./cc-test-reporter before-build
29
-
30
- script: bundle exec rspec --tag ~performance:true
31
-
32
- after_script:
33
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
34
-
35
- cache: bundler
36
-
37
- env:
38
- global:
39
- CC_TEST_REPORTER_ID=99325a42b78ef51a9d51574d20dbcd6acdfe75c8568f1433f73b61f17149e05d
40
- COVERAGE=1
data/Gemfile.lock DELETED
@@ -1,134 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- fast_serializer_ruby (0.6.2)
5
-
6
- GEM
7
- remote: https://rubygems.org/
8
- specs:
9
- actionpack (5.2.4.1)
10
- actionview (= 5.2.4.1)
11
- activesupport (= 5.2.4.1)
12
- rack (~> 2.0, >= 2.0.8)
13
- rack-test (>= 0.6.3)
14
- rails-dom-testing (~> 2.0)
15
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
16
- actionview (5.2.4.1)
17
- activesupport (= 5.2.4.1)
18
- builder (~> 3.1)
19
- erubi (~> 1.4)
20
- rails-dom-testing (~> 2.0)
21
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
22
- active_model_serializers (0.10.10)
23
- actionpack (>= 4.1, < 6.1)
24
- activemodel (>= 4.1, < 6.1)
25
- case_transform (>= 0.2)
26
- jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
27
- activemodel (5.2.4.1)
28
- activesupport (= 5.2.4.1)
29
- activesupport (5.2.4.1)
30
- concurrent-ruby (~> 1.0, >= 1.0.2)
31
- i18n (>= 0.7, < 2)
32
- minitest (~> 5.1)
33
- tzinfo (~> 1.1)
34
- allocation_stats (0.1.5)
35
- benchmark-malloc (0.2.0)
36
- benchmark-memory (0.1.2)
37
- memory_profiler (~> 0.9)
38
- benchmark-perf (0.6.0)
39
- benchmark-trend (0.4.0)
40
- builder (3.2.4)
41
- case_transform (0.2)
42
- activesupport
43
- coderay (1.1.2)
44
- concurrent-ruby (1.1.6)
45
- crass (1.0.6)
46
- diff-lcs (1.3)
47
- docile (1.3.2)
48
- erubi (1.9.0)
49
- factory_bot (5.1.1)
50
- activesupport (>= 4.2.0)
51
- faker (2.10.2)
52
- i18n (>= 1.6, < 2)
53
- ffi (1.12.2-java)
54
- i18n (1.8.2)
55
- concurrent-ruby (~> 1.0)
56
- json (2.3.0)
57
- json (2.3.0-java)
58
- jsonapi-renderer (0.2.2)
59
- loofah (2.4.0)
60
- crass (~> 1.0.2)
61
- nokogiri (>= 1.5.9)
62
- memory_profiler (0.9.14)
63
- method_source (0.9.2)
64
- mini_portile2 (2.4.0)
65
- minitest (5.14.0)
66
- nokogiri (1.10.9)
67
- mini_portile2 (~> 2.4.0)
68
- nokogiri (1.10.9-java)
69
- pry (0.12.2)
70
- coderay (~> 1.1.0)
71
- method_source (~> 0.9.0)
72
- pry (0.12.2-java)
73
- coderay (~> 1.1.0)
74
- method_source (~> 0.9.0)
75
- spoon (~> 0.0)
76
- rack (2.2.2)
77
- rack-test (1.1.0)
78
- rack (>= 1.0, < 3)
79
- rails-dom-testing (2.0.3)
80
- activesupport (>= 4.2.0)
81
- nokogiri (>= 1.6)
82
- rails-html-sanitizer (1.3.0)
83
- loofah (~> 2.3)
84
- rake (13.0.1)
85
- rspec (3.9.0)
86
- rspec-core (~> 3.9.0)
87
- rspec-expectations (~> 3.9.0)
88
- rspec-mocks (~> 3.9.0)
89
- rspec-benchmark (0.6.0)
90
- benchmark-malloc (~> 0.2)
91
- benchmark-perf (~> 0.6)
92
- benchmark-trend (~> 0.4)
93
- rspec (>= 3.0)
94
- rspec-core (3.9.1)
95
- rspec-support (~> 3.9.1)
96
- rspec-expectations (3.9.1)
97
- diff-lcs (>= 1.2.0, < 2.0)
98
- rspec-support (~> 3.9.0)
99
- rspec-mocks (3.9.1)
100
- diff-lcs (>= 1.2.0, < 2.0)
101
- rspec-support (~> 3.9.0)
102
- rspec-support (3.9.2)
103
- simplecov (0.17.1)
104
- docile (~> 1.1)
105
- json (>= 1.8, < 3)
106
- simplecov-html (~> 0.10.0)
107
- simplecov-html (0.10.2)
108
- spoon (0.0.6)
109
- ffi
110
- thread_safe (0.3.6)
111
- thread_safe (0.3.6-java)
112
- tzinfo (1.2.6)
113
- thread_safe (~> 0.1)
114
-
115
- PLATFORMS
116
- java
117
- ruby
118
-
119
- DEPENDENCIES
120
- active_model_serializers (~> 0.10.0)
121
- activesupport (< 6)
122
- allocation_stats
123
- benchmark-memory (~> 0.1)
124
- factory_bot
125
- faker
126
- fast_serializer_ruby!
127
- pry
128
- rake
129
- rspec (~> 3.0)
130
- rspec-benchmark
131
- simplecov (~> 0.17.1)
132
-
133
- BUNDLED WITH
134
- 2.1.4