stockpot 0.3.1 → 0.4.3

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: a2ed98e155357c764f537d390bdf41db905bb5231e33bb7644639c1f309fde33
4
- data.tar.gz: 0cd8008bef691299dc4c2e50343ef9d98002b9857703ca4f9a1cee55f2eed556
3
+ metadata.gz: e055ab2e9c7448a3a876f2dd91b92abf07f85a934f58a1a06cc1b142fa9a716f
4
+ data.tar.gz: 7fcbed7483835ad4add9288eaf4a6aa93c608829c24b7a762d71d52ff444cd39
5
5
  SHA512:
6
- metadata.gz: 00e9c0c1eea751c8f01bdb925592f904a578dea35aa0430278bd93ec7923c564cd7d787499fb8ce77feb07b7f1aad78d67a68884974640b532428ac381e4aa4b
7
- data.tar.gz: e66ffa80fc4138ca3b01e86ab4012043d7909f9735e877d4cc2391f63e34a2b1de066761eb61cea0e19e134f30165584a2d845f8f65e62653479416783407b78
6
+ metadata.gz: f0057713be313d5d886eb72fbb211e7b1dc9b33e79299fc9c2b58330767f328beac1bac27f35f150f864f0076ca86a448a00f79ae744e16de079005c1ecc71cd
7
+ data.tar.gz: 32a2c201e11616b21bcf4bb9ff61a54d53a9f6bfa1724b62ff970bd97bbf3847b3e5244751623599074d8a2493b000e2b30dd7a3fcd9088044aa68afcd3b60c3
data/README.md CHANGED
@@ -79,7 +79,7 @@ Query for data. Accepts a array of objects that require at least a model name, b
79
79
 
80
80
  #### POST
81
81
 
82
- Create new data. Accepts an object specifying a single model with additional qualifiers.
82
+ Create new data. Accepts an an array of objects specifying a single model with additional qualifiers.
83
83
 
84
84
  * factory (required) - Specify which factory to create a record with.
85
85
  * list (optional) - Specify a count of items to create, default: 1
@@ -87,7 +87,7 @@ Create new data. Accepts an object specifying a single model with additional qua
87
87
  * attributes (optional) - An array of objects allowing for the specification of data to be used when creating records. Array position matches with list order if multiple records are desired.
88
88
 
89
89
  ```javascript
90
- {
90
+ [{
91
91
  factory: "user",
92
92
  traits: ["having_address"],
93
93
  attributes: [{
@@ -96,7 +96,7 @@ Create new data. Accepts an object specifying a single model with additional qua
96
96
  first_name: "Foo",
97
97
  last_name: "Bar"
98
98
  }]
99
- }
99
+ }]
100
100
  ```
101
101
 
102
102
  #### DELETE
@@ -129,7 +129,7 @@ Clears Rails & Redis caches and truncates Active Records databases. No body requ
129
129
  ### `/stockpot/redis`
130
130
 
131
131
  #### GET
132
-
132
+
133
133
  Query for data. Accepts key or field to use to search cache for record.
134
134
 
135
135
  ```javascript
@@ -139,6 +139,10 @@ Query for data. Accepts key or field to use to search cache for record.
139
139
  }
140
140
  ```
141
141
 
142
+ #### GET - Keys
143
+
144
+ Query for all keys within data. No body or argument required.
145
+
142
146
  #### POST - Create new data
143
147
 
144
148
  Accepts an object specifying a key, field, and value to be inserted into Redis cache.
@@ -168,7 +172,7 @@ Cypress.Commands.add("getRecords", args => {
168
172
  ```
169
173
 
170
174
  Our tests can then call this command like this
171
-
175
+
172
176
  ```javascript
173
177
  cy.getRecords([{ model: "user", id: user.id }])
174
178
  .then(res => {
@@ -1,29 +1,25 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "database_cleaner"
4
-
5
3
  module Stockpot
6
4
  class DatabaseCleanerController < MainController
7
5
  # Clean database before, between, and after tests by clearing Rails
8
6
  # and REDIS caches and truncating the active record database.
9
7
  def index
10
- clear_cache
11
- clean_active_record
8
+ clear_cache_and_redis
9
+ clean_database
12
10
  render json: { status: 204 }
13
11
  end
14
12
 
15
13
  private
16
14
 
17
- def clear_cache
18
- DatabaseCleaner[:redis].clean_with(:truncation)
19
- REDIS.flushdb
15
+ def clear_cache_and_redis
16
+ DatabaseCleaner[:redis].clean_with(:deletion)
20
17
  Rails.cache.clear
21
18
  Timecop.return
22
19
  end
23
20
 
24
- def clean_active_record
21
+ def clean_database
25
22
  DatabaseCleaner[:active_record].clean_with(:truncation)
26
- DatabaseCleaner.clean_with(:truncation)
27
23
  end
28
24
  end
29
25
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Stockpot
3
4
  class HealthzController < MainController
4
5
  def index
@@ -1,25 +1,29 @@
1
1
  # frozen_string_literal: true
2
+
3
+ require "pg"
4
+ require "active_record"
5
+
2
6
  module Stockpot
3
7
  module Helper
4
8
  module Errors
5
9
  def rescue_error(error)
6
- logger = Logger.new(STDERR)
10
+ logger = Logger.new($stderr)
7
11
  logger.warn(error)
8
12
 
9
13
  case error
10
14
  when NameError
11
- return_error(error.to_s, error.backtrace.first(5), :bad_request)
15
+ return_error(error.message, :bad_request, error.backtrace.first(5))
12
16
  when PG::Error
13
- return_error("Postgres error: #{error}", error.backtrace.first(5), :server_error)
14
- when ActiveRecord::RecordInvalid, ActiveRecord::Validations
15
- return_error("ActiveRecord error: #{error}", error.backtrace.first(5), :server_error)
17
+ return_error("Postgres error: #{error.message}", :internal_server_error, error.backtrace.first(5))
18
+ when ActiveRecord::RecordInvalid, ActiveRecord::Validations, ActiveRecord::RecordNotDestroyed
19
+ return_error(%q(In "#{error.record.class}" class: "#{error.message}"), :expectation_failed, error.backtrace.first(5))
16
20
  else
17
- return_error(error.to_s, error.backtrace.first(5),:server_error)
21
+ return_error(error.message, :internal_server_error, error.backtrace.first(5))
18
22
  end
19
23
  end
20
24
 
21
- def return_error(message, backtrace, status)
22
- { json: { error: { status: status, backtrace: backtrace, message: message }}, status: status }
25
+ def return_error(message, status, backtrace = "No backtrace")
26
+ render json: { error: { status: status, backtrace: backtrace, message: message }}, status: status
23
27
  end
24
28
  end
25
29
  end
@@ -1,12 +1,12 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Stockpot
3
4
  class MainController < ActionController::API
4
5
  include ActiveSupport::Rescuable
5
6
  include Helper::Errors
6
7
 
7
8
  rescue_from StandardError do |exception|
8
- render rescue_error(exception)
9
+ rescue_error(exception)
9
10
  end
10
- # protect_from_forgery with: :exception
11
11
  end
12
12
  end
@@ -1,67 +1,96 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require "factory_bot_rails"
4
+ require "active_record/transactions"
3
5
 
4
6
  module Stockpot
5
7
  class RecordsController < MainController
6
8
  include ActiveSupport::Inflector
7
9
  include ActiveRecord::Transactions
10
+ include Helper::Errors
8
11
 
9
12
  before_action only: %i[index destroy update] do
10
- return_error("You need to provide at least one model name as an argument", 400) if params.dig(:models).blank?
13
+ return_error("You need to provide at least one model name as an argument", 400) if params[:models].blank?
11
14
  end
12
15
  before_action only: %i[create] do
13
- return_error("You need to provide at least one factory name as an argument", 400) if params.dig(:factory).blank?
16
+ return_error("You need to provide at least one factory name as an argument", 400) if params[:factories].blank?
17
+ end
18
+ before_action do
19
+ @response_data = {}
14
20
  end
15
21
 
16
22
  def index
17
- obj = {}
18
23
  models.each_with_index do |element, i|
19
- model = element[:model].to_s
24
+ model = element[:model]
20
25
  class_name = find_correct_class_name(model)
26
+ formatted_model = pluralize(model).camelize(:lower).gsub("::", "")
21
27
 
22
- obj[pluralize(model).camelize(:lower)] = class_name.constantize.where(models[i].except(:model))
28
+ @response_data[formatted_model] = [] unless @response_data.key?(formatted_model)
29
+ @response_data[formatted_model].concat(class_name.constantize.where(models[i].except(:model)))
30
+ @response_data[formatted_model].reverse!.uniq! { |obj| obj["id"] }
23
31
  end
24
-
25
- render json: obj, status: :ok
32
+ render json: @response_data, status: :ok
26
33
  end
27
34
 
28
35
  def create
29
- list = params[:list] || 1
30
36
  ActiveRecord::Base.transaction do
31
- list.times do |n|
32
- all_parameters = [ factory, *traits, attributes(n) ].compact
33
- @factory = FactoryBot.create(*all_parameters)
37
+ factories.each do |element|
38
+ ids = []
39
+ list = element[:list] || 1
40
+ factory = element[:factory]
41
+ traits = element[:traits].map(&:to_sym) if element[:traits].present?
42
+
43
+ list.times do |n|
44
+ attributes = element[:attributes][n].to_h if element[:attributes].present?
45
+ factory_arguments = [ factory, *traits, attributes ].compact
46
+ @factory_instance = FactoryBot.create(*factory_arguments)
47
+ ids << @factory_instance.id
48
+ end
49
+
50
+ factory_name = pluralize(factory).camelize(:lower)
51
+
52
+ @response_data[factory_name] = [] unless @response_data.key?(factory_name)
53
+ @response_data[factory_name].concat(@factory_instance.class.name.constantize.where(id: ids))
34
54
  end
35
55
  end
36
- obj = @factory.class.name.constantize.last(list)
37
-
38
- render json: obj, status: :created
56
+ render json: @response_data, status: :accepted
39
57
  end
40
58
 
41
59
  def destroy
42
- obj = {}
43
60
  ActiveRecord::Base.transaction do
44
61
  models.each_with_index do |element, i|
45
- model = element[:model].to_s
62
+ model = element[:model]
46
63
  class_name = find_correct_class_name(model)
47
- obj[pluralize(model).camelize(:lower)] = class_name.constantize.where(models[i].except(:model)).destroy_all
64
+ formatted_model = pluralize(model).camelize(:lower).gsub("::", "")
65
+
66
+ class_name.constantize.where(models[i].except(:model)).each do |record|
67
+ record.destroy!
68
+ @response_data[formatted_model] = [] unless @response_data.key?(formatted_model)
69
+ @response_data[formatted_model] << record
70
+ end
48
71
  end
49
72
  end
50
-
51
- render json: obj, status: :accepted
73
+ render json: @response_data, status: :accepted
52
74
  end
53
75
 
54
76
  def update
55
- obj = {}
56
77
  ActiveRecord::Base.transaction do
57
78
  models.each_with_index do |element, i|
58
- model = element[:model].to_s
79
+ model = element[:model]
59
80
  class_name = find_correct_class_name(model)
60
81
  update_params = params.permit![:models][i][:update].to_h
61
- obj[pluralize(model).camelize(:lower)] = class_name.constantize.where(models[i].except(:model, :update)).update(update_params)
82
+ attributes_to_search = models[i].except(:model, :update)
83
+ formatted_model = pluralize(model).camelize(:lower).gsub("::", "")
84
+
85
+ class_name.constantize.where(attributes_to_search).each do |record|
86
+ record.update!(update_params)
87
+ @response_data[formatted_model] = [] unless @response_data.key?(formatted_model)
88
+ @response_data[formatted_model] << class_name.constantize.find(record.id)
89
+ @response_data[formatted_model].reverse!.uniq! { |obj| obj["id"] }
90
+ end
62
91
  end
63
92
  end
64
- render json: obj, status: :accepted
93
+ render json: @response_data, status: :accepted
65
94
  end
66
95
 
67
96
  private
@@ -70,29 +99,19 @@ module Stockpot
70
99
  # We are getting the class name from the factory or we default to whatever we send in.
71
100
  # Something to keep in mind "module/class_name".camelize will translate into "Module::ClassName"
72
101
  # which is perfect for namespaces in case there is no factory associated with a specific model
73
- FactoryBot.factories.registered?(model) ? FactoryBot.build_stubbed(model).class.name : model.camelize
74
- end
75
-
76
- def traits
77
- return if params[:traits].blank?
78
-
79
- params[:traits].map(&:to_sym)
80
- end
81
-
82
- def factory
83
- params[:factory].to_sym
84
- end
85
-
86
- # rubocop:disable Naming/UncommunicativeMethodParamName
87
- def attributes(n)
88
- # rubocop:enable Naming/UncommunicativeMethodParamName
89
- return if params[:attributes].blank?
90
-
91
- params.permit![:attributes][n].to_h
102
+ if FactoryBot.factories.registered?(model)
103
+ FactoryBot.factories.find(model).build_class.to_s
104
+ else
105
+ model.camelize
106
+ end
92
107
  end
93
108
 
94
109
  def models
95
110
  params.permit![:models].map(&:to_h)
96
111
  end
112
+
113
+ def factories
114
+ params.permit![:factories].map(&:to_h)
115
+ end
97
116
  end
98
117
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Stockpot
3
4
  class RedisController < MainController
4
5
  def index
@@ -24,5 +25,11 @@ module Stockpot
24
25
 
25
26
  render json: { status: 201 }
26
27
  end
28
+
29
+ def keys
30
+ record = REDIS.keys
31
+
32
+ render json: record.to_json, status: :ok
33
+ end
27
34
  end
28
35
  end
data/config/routes.rb CHANGED
@@ -8,8 +8,9 @@ Stockpot::Engine.routes.draw do
8
8
 
9
9
  delete "/clean_database", to: "database_cleaner#index"
10
10
 
11
- get "/redis", to: "redis#index"
12
11
  post "/redis", to: "redis#create"
12
+ get "/redis", to: "redis#index"
13
+ get "/redis/keys", to: "redis#keys"
13
14
 
14
15
  get "/healthz", to: "healthz#index"
15
16
  end
@@ -4,11 +4,5 @@ module Stockpot
4
4
  class Engine < ::Rails::Engine
5
5
  isolate_namespace Stockpot
6
6
  config.generators.api_only = true
7
-
8
- config.generators do |generators|
9
- generators.test_framework :rspec
10
- generators.fixture_replacement :factory_bot
11
- generators.factory_bot dir: 'spec/factories'
12
- end
13
7
  end
14
8
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Stockpot
4
- VERSION = "0.3.1"
4
+ VERSION = "0.4.3"
5
5
  end
metadata CHANGED
@@ -1,206 +1,220 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stockpot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jayson Smith
8
+ - Brian Herman
9
+ - Derek Campbell
10
+ - Victor Santana
8
11
  autorequire:
9
12
  bindir: bin
10
13
  cert_chain: []
11
- date: 2020-04-06 00:00:00.000000000 Z
14
+ date: 2021-10-26 00:00:00.000000000 Z
12
15
  dependencies:
13
16
  - !ruby/object:Gem::Dependency
14
17
  name: rails
15
18
  requirement: !ruby/object:Gem::Requirement
16
19
  requirements:
17
- - - ">="
20
+ - - "~>"
18
21
  - !ruby/object:Gem::Version
19
- version: 5.2.3
22
+ version: 6.1.4
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - ">="
27
+ - - "~>"
25
28
  - !ruby/object:Gem::Version
26
- version: 5.2.3
29
+ version: 6.1.4
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: factory_bot_rails
29
32
  requirement: !ruby/object:Gem::Requirement
30
33
  requirements:
31
34
  - - "~>"
32
35
  - !ruby/object:Gem::Version
33
- version: 5.1.0
36
+ version: 6.2.0
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: 6.2.0
44
+ - !ruby/object:Gem::Dependency
45
+ name: database_cleaner-active_record
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: 2.0.1
34
51
  type: :runtime
35
52
  prerelease: false
36
53
  version_requirements: !ruby/object:Gem::Requirement
37
54
  requirements:
38
55
  - - "~>"
39
56
  - !ruby/object:Gem::Version
40
- version: 5.1.0
57
+ version: 2.0.1
41
58
  - !ruby/object:Gem::Dependency
42
- name: database_cleaner
59
+ name: database_cleaner-redis
43
60
  requirement: !ruby/object:Gem::Requirement
44
61
  requirements:
45
62
  - - "~>"
46
63
  - !ruby/object:Gem::Version
47
- version: 1.6.2
64
+ version: 2.0.0
48
65
  type: :runtime
49
66
  prerelease: false
50
67
  version_requirements: !ruby/object:Gem::Requirement
51
68
  requirements:
52
69
  - - "~>"
53
70
  - !ruby/object:Gem::Version
54
- version: 1.6.2
71
+ version: 2.0.0
55
72
  - !ruby/object:Gem::Dependency
56
73
  name: redis
57
74
  requirement: !ruby/object:Gem::Requirement
58
75
  requirements:
59
- - - ">="
76
+ - - "~>"
60
77
  - !ruby/object:Gem::Version
61
- version: 3.3.5
78
+ version: 4.4.0
62
79
  type: :runtime
63
80
  prerelease: false
64
81
  version_requirements: !ruby/object:Gem::Requirement
65
82
  requirements:
66
- - - ">="
83
+ - - "~>"
67
84
  - !ruby/object:Gem::Version
68
- version: 3.3.5
85
+ version: 4.4.0
69
86
  - !ruby/object:Gem::Dependency
70
87
  name: timecop
71
88
  requirement: !ruby/object:Gem::Requirement
72
89
  requirements:
73
90
  - - "~>"
74
91
  - !ruby/object:Gem::Version
75
- version: '0.8'
92
+ version: 0.9.4
76
93
  type: :runtime
77
94
  prerelease: false
78
95
  version_requirements: !ruby/object:Gem::Requirement
79
96
  requirements:
80
97
  - - "~>"
81
98
  - !ruby/object:Gem::Version
82
- version: '0.8'
99
+ version: 0.9.4
83
100
  - !ruby/object:Gem::Dependency
84
101
  name: pry-byebug
85
102
  requirement: !ruby/object:Gem::Requirement
86
103
  requirements:
87
104
  - - "~>"
88
105
  - !ruby/object:Gem::Version
89
- version: '3.7'
106
+ version: '3.9'
90
107
  type: :development
91
108
  prerelease: false
92
109
  version_requirements: !ruby/object:Gem::Requirement
93
110
  requirements:
94
111
  - - "~>"
95
112
  - !ruby/object:Gem::Version
96
- version: '3.7'
113
+ version: '3.9'
97
114
  - !ruby/object:Gem::Dependency
98
- name: rake
115
+ name: pry
99
116
  requirement: !ruby/object:Gem::Requirement
100
117
  requirements:
101
118
  - - "~>"
102
119
  - !ruby/object:Gem::Version
103
- version: '13.0'
104
- - - ">="
105
- - !ruby/object:Gem::Version
106
- version: 13.0.1
120
+ version: 0.13.0
107
121
  type: :development
108
122
  prerelease: false
109
123
  version_requirements: !ruby/object:Gem::Requirement
110
124
  requirements:
111
125
  - - "~>"
112
126
  - !ruby/object:Gem::Version
113
- version: '13.0'
114
- - - ">="
115
- - !ruby/object:Gem::Version
116
- version: 13.0.1
127
+ version: 0.13.0
117
128
  - !ruby/object:Gem::Dependency
118
- name: rspec
129
+ name: rake
119
130
  requirement: !ruby/object:Gem::Requirement
120
131
  requirements:
121
132
  - - "~>"
122
133
  - !ruby/object:Gem::Version
123
- version: '3.9'
134
+ version: 13.0.6
124
135
  type: :development
125
136
  prerelease: false
126
137
  version_requirements: !ruby/object:Gem::Requirement
127
138
  requirements:
128
139
  - - "~>"
129
140
  - !ruby/object:Gem::Version
130
- version: '3.9'
141
+ version: 13.0.6
131
142
  - !ruby/object:Gem::Dependency
132
143
  name: rspec-rails
133
144
  requirement: !ruby/object:Gem::Requirement
134
145
  requirements:
135
146
  - - "~>"
136
147
  - !ruby/object:Gem::Version
137
- version: '3.9'
148
+ version: 5.0.2
138
149
  type: :development
139
150
  prerelease: false
140
151
  version_requirements: !ruby/object:Gem::Requirement
141
152
  requirements:
142
153
  - - "~>"
143
154
  - !ruby/object:Gem::Version
144
- version: '3.9'
155
+ version: 5.0.2
145
156
  - !ruby/object:Gem::Dependency
146
157
  name: spicerack-styleguide
147
158
  requirement: !ruby/object:Gem::Requirement
148
159
  requirements:
149
160
  - - ">="
150
161
  - !ruby/object:Gem::Version
151
- version: 0.21.0
152
- - - "<"
153
- - !ruby/object:Gem::Version
154
- version: '1.0'
162
+ version: 0.26.0.4
155
163
  type: :development
156
164
  prerelease: false
157
165
  version_requirements: !ruby/object:Gem::Requirement
158
166
  requirements:
159
167
  - - ">="
160
168
  - !ruby/object:Gem::Version
161
- version: 0.21.0
162
- - - "<"
163
- - !ruby/object:Gem::Version
164
- version: '1.0'
169
+ version: 0.26.0.4
165
170
  - !ruby/object:Gem::Dependency
166
171
  name: shoulda-matchers
167
172
  requirement: !ruby/object:Gem::Requirement
168
173
  requirements:
169
174
  - - "~>"
170
175
  - !ruby/object:Gem::Version
171
- version: '4.1'
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- version: 4.1.2
176
+ version: 5.0.0
175
177
  type: :development
176
178
  prerelease: false
177
179
  version_requirements: !ruby/object:Gem::Requirement
178
180
  requirements:
179
181
  - - "~>"
180
182
  - !ruby/object:Gem::Version
181
- version: '4.1'
182
- - - ">="
183
- - !ruby/object:Gem::Version
184
- version: 4.1.2
183
+ version: 5.0.0
185
184
  - !ruby/object:Gem::Dependency
186
185
  name: simplecov
187
186
  requirement: !ruby/object:Gem::Requirement
188
187
  requirements:
189
188
  - - "~>"
190
189
  - !ruby/object:Gem::Version
191
- version: 0.17.1
190
+ version: 0.21.2
191
+ type: :development
192
+ prerelease: false
193
+ version_requirements: !ruby/object:Gem::Requirement
194
+ requirements:
195
+ - - "~>"
196
+ - !ruby/object:Gem::Version
197
+ version: 0.21.2
198
+ - !ruby/object:Gem::Dependency
199
+ name: pg
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: 1.2.3
192
205
  type: :development
193
206
  prerelease: false
194
207
  version_requirements: !ruby/object:Gem::Requirement
195
208
  requirements:
196
209
  - - "~>"
197
210
  - !ruby/object:Gem::Version
198
- version: 0.17.1
211
+ version: 1.2.3
199
212
  description: 'Exposes a few end points from your app, easily enabling CRUD actions
200
213
  on your database that you can utilize from things like a standalone test suite to
201
214
  set up state. (think: Cypress, Cucumber, etc.)'
202
215
  email:
203
216
  - gh@nes.33mail.com
217
+ - victorfrank.santanalugo@gmail.com
204
218
  executables: []
205
219
  extensions: []
206
220
  extra_rdoc_files: []
@@ -240,8 +254,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
240
254
  - !ruby/object:Gem::Version
241
255
  version: '0'
242
256
  requirements: []
243
- rubyforge_project:
244
- rubygems_version: 2.7.8
257
+ rubygems_version: 3.1.6
245
258
  signing_key:
246
259
  specification_version: 4
247
260
  summary: Makes setting up test data in your Rails database from an external resource