nose 0.1.0pre4 → 0.1.3

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
- SHA1:
3
- metadata.gz: 41ef239c0f70c5620bf23b22375b827c66cf1455
4
- data.tar.gz: 38f9681415bea77fdf86d2046391e264c9498edf
2
+ SHA256:
3
+ metadata.gz: fdab6ac0cd36aff76527e1581daa256c7078b99aca5221d0744b9c0d8ab0fd7e
4
+ data.tar.gz: 3972ad33202958c29b58fd26863f485a25526fe5369c82e47f8555b89d638cc6
5
5
  SHA512:
6
- metadata.gz: 6dfe61788efd183fd066ee28b0e40d63815786c0a6d405f9726705dbd49a288e887ce499a7008abcdd15c5abfc2bcb664a087c0ec9933f857d786742abd5c352
7
- data.tar.gz: 3fe77c7d39f9c24eb95a2ba0ad8b9cfb0f0975d4d48c88ef8050ac109cfbb1df3c26f698ab502aa6e805e18625c8ebad13a48162722702690afd1bf256b68916
6
+ metadata.gz: 9d21c1fbf046dfc271d232213b1d870b714182ccbd251976587d54f6024da5e88aba65ef7a891d6ab0b6e01af33d82f0e30da0d41fdae9ee3c126da4c54d5824
7
+ data.tar.gz: 416fdc8224f4446a14491806a8907c8a8381009b4315f615d994d87dd4b1f28bd8e9f60d1b04e5c6b72e53518b9c217d8c9596be99337e4082b05d5a142c24c8
@@ -4,7 +4,10 @@ module NoSE
4
4
  # Communication with backends for index creation and statement execution
5
5
  module Backend
6
6
  # Superclass of all database backends
7
- class BackendBase
7
+ class Backend
8
+ include Listing
9
+ include Supertype
10
+
8
11
  def initialize(model, indexes, plans, update_plans, _config)
9
12
  @model = model
10
13
  @indexes = indexes
@@ -308,7 +311,7 @@ module NoSE
308
311
 
309
312
  # Check if the subclass has overridden this step
310
313
  subclass_step_name = step_class.name.sub \
311
- 'NoSE::Backend::BackendBase', self.class.name
314
+ 'NoSE::Backend::Backend', self.class.name
312
315
  step_class = Object.const_get subclass_step_name
313
316
  step_class.new client, fields, conditions,
314
317
  step, next_step, prev_step
@@ -328,7 +331,7 @@ module NoSE
328
331
  def add_delete_step(plan, steps)
329
332
  step_class = DeleteStatementStep
330
333
  subclass_step_name = step_class.name.sub \
331
- 'NoSE::Backend::BackendBase', self.class.name
334
+ 'NoSE::Backend::Backend', self.class.name
332
335
  step_class = Object.const_get subclass_step_name
333
336
  steps << step_class.new(client, plan.index)
334
337
  end
@@ -338,7 +341,7 @@ module NoSE
338
341
  def add_insert_step(plan, steps, fields)
339
342
  step_class = InsertStatementStep
340
343
  subclass_step_name = step_class.name.sub \
341
- 'NoSE::Backend::BackendBase', self.class.name
344
+ 'NoSE::Backend::Backend', self.class.name
342
345
  step_class = Object.const_get subclass_step_name
343
346
  steps << step_class.new(client, plan.index, fields)
344
347
  end
@@ -369,7 +372,7 @@ module NoSE
369
372
  results = nil
370
373
 
371
374
  @steps.each do |step|
372
- if step.is_a?(BackendBase::IndexLookupStatementStep)
375
+ if step.is_a?(Backend::IndexLookupStatementStep)
373
376
  field_ids = step.index.all_fields.map(&:id)
374
377
  field_conds = conditions.select { |key| field_ids.include? key }
375
378
  else
@@ -400,10 +403,10 @@ module NoSE
400
403
  @statement = statement
401
404
  @support_plans = support_plans
402
405
  @delete_step = steps.find do |step|
403
- step.is_a? BackendBase::DeleteStatementStep
406
+ step.is_a? Backend::DeleteStatementStep
404
407
  end
405
408
  @insert_step = steps.find do |step|
406
- step.is_a? BackendBase::InsertStatementStep
409
+ step.is_a? Backend::InsertStatementStep
407
410
  end
408
411
  end
409
412
 
@@ -555,3 +558,7 @@ module NoSE
555
558
  end
556
559
  end
557
560
  end
561
+
562
+ require_relative 'backend/cassandra'
563
+ require_relative 'backend/file'
564
+ require_relative 'backend/mongo'
@@ -6,7 +6,9 @@ require 'zlib'
6
6
  module NoSE
7
7
  module Backend
8
8
  # A backend which communicates with Cassandra via CQL
9
- class CassandraBackend < BackendBase
9
+ class CassandraBackend < Backend
10
+ include Subtype
11
+
10
12
  def initialize(model, indexes, plans, update_plans, config)
11
13
  super
12
14
 
@@ -172,7 +174,7 @@ module NoSE
172
174
  end
173
175
 
174
176
  # Insert data into an index on the backend
175
- class InsertStatementStep < BackendBase::InsertStatementStep
177
+ class InsertStatementStep < Backend::InsertStatementStep
176
178
  def initialize(client, index, fields)
177
179
  super
178
180
 
@@ -228,7 +230,7 @@ module NoSE
228
230
  end
229
231
 
230
232
  # Delete data from an index on the backend
231
- class DeleteStatementStep < BackendBase::DeleteStatementStep
233
+ class DeleteStatementStep < Backend::DeleteStatementStep
232
234
  def initialize(client, index)
233
235
  super
234
236
 
@@ -266,7 +268,7 @@ module NoSE
266
268
  end
267
269
 
268
270
  # A query step to look up data from a particular column family
269
- class IndexLookupStatementStep < BackendBase::IndexLookupStatementStep
271
+ class IndexLookupStatementStep < Backend::IndexLookupStatementStep
270
272
  # rubocop:disable Metrics/ParameterLists
271
273
  def initialize(client, select, conditions, step, next_step, prev_step)
272
274
  super
@@ -3,7 +3,9 @@
3
3
  module NoSE
4
4
  module Backend
5
5
  # Simple backend which persists data to a file
6
- class FileBackend < BackendBase
6
+ class FileBackend < Backend
7
+ include Subtype
8
+
7
9
  def initialize(model, indexes, plans, update_plans, config)
8
10
  super
9
11
 
@@ -104,7 +106,7 @@ module NoSE
104
106
  end
105
107
 
106
108
  # Look up data on an index in the backend
107
- class IndexLookupStatementStep < BackendBase::IndexLookupStatementStep
109
+ class IndexLookupStatementStep < Backend::IndexLookupStatementStep
108
110
  include RowMatcher
109
111
 
110
112
  # Filter all the rows in the specified index to those requested
@@ -128,7 +130,7 @@ module NoSE
128
130
  end
129
131
 
130
132
  # Insert data into an index on the backend
131
- class InsertStatementStep < BackendBase::InsertStatementStep
133
+ class InsertStatementStep < Backend::InsertStatementStep
132
134
  # Add new rows to the index
133
135
  def process(results)
134
136
  key_ids = (@index.hash_fields + @index.order_fields).map(&:id).to_set
@@ -163,7 +165,7 @@ module NoSE
163
165
  end
164
166
 
165
167
  # Delete data from an index on the backend
166
- class DeleteStatementStep < BackendBase::DeleteStatementStep
168
+ class DeleteStatementStep < Backend::DeleteStatementStep
167
169
  include RowMatcher
168
170
 
169
171
  # Remove rows matching the results from the dataset
@@ -5,7 +5,9 @@ require 'mongo'
5
5
  module NoSE
6
6
  module Backend
7
7
  # A backend which communicates with MongoDB
8
- class MongoBackend < BackendBase
8
+ class MongoBackend < Backend
9
+ include Subtype
10
+
9
11
  def initialize(model, indexes, plans, update_plans, config)
10
12
  super
11
13
 
@@ -134,7 +136,7 @@ module NoSE
134
136
  end
135
137
 
136
138
  # Insert data into an index on the backend
137
- class InsertStatementStep < BackendBase::InsertStatementStep
139
+ class InsertStatementStep < Backend::InsertStatementStep
138
140
  def initialize(client, index, fields)
139
141
  super
140
142
 
@@ -169,7 +171,7 @@ module NoSE
169
171
  end
170
172
 
171
173
  # A query step to look up data from a particular collection
172
- class IndexLookupStatementStep < BackendBase::IndexLookupStatementStep
174
+ class IndexLookupStatementStep < Backend::IndexLookupStatementStep
173
175
  # rubocop:disable Metrics/ParameterLists
174
176
  def initialize(client, select, conditions, step, next_step, prev_step)
175
177
  super
@@ -5,6 +5,7 @@ module NoSE
5
5
  module Cost
6
6
  # Cost model for a backend database
7
7
  class Cost
8
+ include Listing
8
9
  include Supertype
9
10
 
10
11
  def initialize(**options)
@@ -7,7 +7,8 @@ module NoSE
7
7
  :entries, :entry_size, :size, :hash_count, :per_hash_count,
8
8
  :graph
9
9
 
10
- def initialize(hash_fields, order_fields, extra, graph, saved_key = nil)
10
+ def initialize(hash_fields, order_fields, extra, graph,
11
+ saved_key: nil)
11
12
  order_set = order_fields.to_set
12
13
  @hash_fields = hash_fields.to_set
13
14
  @order_fields = order_fields.delete_if { |e| hash_fields.include? e }
@@ -189,7 +190,7 @@ module NoSE
189
190
  # @return [Index]
190
191
  def simple_index
191
192
  Index.new [id_field], [], fields.values - [id_field],
192
- QueryGraph::Graph.from_path([id_field]), name
193
+ QueryGraph::Graph.from_path([id_field]), saved_key: name
193
194
  end
194
195
  end
195
196
 
@@ -203,7 +203,7 @@ module NoSE
203
203
  # A random string of the correct length
204
204
  # @return [String]
205
205
  def random_value
206
- Faker::Lorem.characters(@size)
206
+ Faker::Lorem.characters(number: @size)
207
207
  end
208
208
  end
209
209
 
@@ -237,7 +237,7 @@ module NoSE
237
237
  next_year = DateTime.now.next_year
238
238
  next_year = next_year.new_offset(Rational(0, 24))
239
239
 
240
- Faker::Time.between prev_year, next_year
240
+ Faker::Time.between_dates from: prev_year, to: next_year
241
241
  end
242
242
  end
243
243
 
@@ -39,7 +39,8 @@ module NoSE
39
39
  dsl = IndexDSL.new(self)
40
40
  dsl.instance_eval(&block) if block_given?
41
41
  index = Index.new dsl.hash_fields, dsl.order_fields, dsl.extra,
42
- QueryGraph::Graph.from_path(dsl.path_keys), key
42
+ QueryGraph::Graph.from_path(dsl.path_keys),
43
+ saved_key: key
43
44
  @indexes[index.key] = index
44
45
  end
45
46
 
@@ -88,7 +88,6 @@ module NoSE
88
88
 
89
89
  result.workload = @workload
90
90
  result.plans_from_trees trees
91
- result.cost_model = @cost_model
92
91
 
93
92
  # Select the relevant update plans
94
93
  update_plans = update_plans.values.flatten(1).select do |plan|
@@ -99,6 +98,7 @@ module NoSE
99
98
  end
100
99
  result.update_plans = update_plans
101
100
 
101
+ result.cost_model = @cost_model
102
102
  result.validate
103
103
 
104
104
  result
@@ -2,8 +2,9 @@
2
2
 
3
3
  require 'logging'
4
4
 
5
+ require 'mipper'
5
6
  begin
6
- require 'mipper'
7
+ require 'mipper/cbc'
7
8
  rescue LoadError
8
9
  # We can't use most search functionality, but it won't explode
9
10
  nil
@@ -114,7 +114,7 @@ module NoSE
114
114
 
115
115
  Index.new f.call(fragment['hash_fields']),
116
116
  f.call(fragment['order_fields']),
117
- f.call(fragment['extra']), graph, fragment['key']
117
+ f.call(fragment['extra']), graph, saved_key: fragment['key']
118
118
  end
119
119
  end
120
120
 
@@ -150,7 +150,7 @@ module Subtype
150
150
  # Convert camel case class names to an array
151
151
  # @return [Array<String>]
152
152
  def name_array(cls)
153
- frozen_name = cls.name
153
+ frozen_name = cls.name.dup
154
154
  frozen_name.gsub!(/^.*::/, '')
155
155
  frozen_name.gsub!('ID', 'Id')
156
156
  frozen_name.freeze
@@ -276,10 +276,14 @@ module NoSE
276
276
  # by the LOAD_PATH class constant
277
277
  # @return [Object] an instance of the class which included this module
278
278
  def load(name)
279
- path = const_get(:LOAD_PATH)
280
- filename = File.expand_path "../../../#{path}/#{name}.rb", __FILE__
281
- source_code = File.read(filename)
279
+ if File.exist? name
280
+ filename = name
281
+ else
282
+ path = const_get(:LOAD_PATH)
283
+ filename = File.expand_path "../../../#{path}/#{name}.rb", __FILE__
284
+ end
282
285
 
286
+ source_code = File.read(filename)
283
287
  instance = binding.eval source_code, filename
284
288
  instance.instance_variable_set :@source_code, source_code
285
289
  instance
@@ -288,6 +292,29 @@ module NoSE
288
292
  end
289
293
  end
290
294
 
295
+ # Allow tracking of subclasses for plugin purposes
296
+ module Listing
297
+ def self.included(base)
298
+ base.extend ClassMethods
299
+ base.class_variable_set :@@registry, {}
300
+ end
301
+
302
+ # Add a class method to track new subclasses
303
+ module ClassMethods
304
+ # Track this new subclass for later
305
+ # @return [void]
306
+ def inherited(subclass)
307
+ class_variable_get(:@@registry)[subclass.name] = subclass
308
+ end
309
+
310
+ # List all of the encountered subclasses
311
+ # @return [Hash<String, Class>]
312
+ def subclasses
313
+ class_variable_get(:@@registry)
314
+ end
315
+ end
316
+ end
317
+
291
318
  # Extend Time to allow conversion to DateTime instances
292
319
  class Time
293
320
  # Convert to a DateTime instance
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nose
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0pre4
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Mior
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-12-31 00:00:00.000000000 Z
11
+ date: 2020-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faker
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.6.6
19
+ version: 2.3.0
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.6.0
22
+ version: 1.7.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: 1.6.6
29
+ version: 2.3.0
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.6.0
32
+ version: 1.7.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: formatador
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -50,108 +50,108 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: 2.7.0
53
+ version: 2.8.0
54
54
  - - ">="
55
55
  - !ruby/object:Gem::Version
56
- version: 2.7.0
56
+ version: 2.8.0
57
57
  type: :runtime
58
58
  prerelease: false
59
59
  version_requirements: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: 2.7.0
63
+ version: 2.8.0
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
- version: 2.7.0
66
+ version: 2.8.0
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: logging
69
69
  requirement: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: 2.1.0
73
+ version: 2.2.0
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 2.1.0
76
+ version: 2.2.0
77
77
  type: :runtime
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
81
  - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: 2.1.0
83
+ version: 2.2.0
84
84
  - - ">="
85
85
  - !ruby/object:Gem::Version
86
- version: 2.1.0
86
+ version: 2.2.0
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: mipper
89
89
  requirement: !ruby/object:Gem::Requirement
90
90
  requirements:
91
91
  - - "~>"
92
92
  - !ruby/object:Gem::Version
93
- version: 0.0.9
93
+ version: 0.1.0
94
94
  type: :runtime
95
95
  prerelease: false
96
96
  version_requirements: !ruby/object:Gem::Requirement
97
97
  requirements:
98
98
  - - "~>"
99
99
  - !ruby/object:Gem::Version
100
- version: 0.0.9
100
+ version: 0.1.0
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: parallel
103
103
  requirement: !ruby/object:Gem::Requirement
104
104
  requirements:
105
105
  - - "~>"
106
106
  - !ruby/object:Gem::Version
107
- version: 1.10.0
107
+ version: 1.17.0
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 1.10.0
110
+ version: 1.11.0
111
111
  type: :runtime
112
112
  prerelease: false
113
113
  version_requirements: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 1.10.0
117
+ version: 1.17.0
118
118
  - - ">="
119
119
  - !ruby/object:Gem::Version
120
- version: 1.10.0
120
+ version: 1.11.0
121
121
  - !ruby/object:Gem::Dependency
122
122
  name: parslet
123
123
  requirement: !ruby/object:Gem::Requirement
124
124
  requirements:
125
125
  - - "~>"
126
126
  - !ruby/object:Gem::Version
127
- version: 1.7.1
127
+ version: 1.8.0
128
128
  - - ">="
129
129
  - !ruby/object:Gem::Version
130
- version: 1.7.0
130
+ version: 1.8.0
131
131
  type: :runtime
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: 1.7.1
137
+ version: 1.8.0
138
138
  - - ">="
139
139
  - !ruby/object:Gem::Version
140
- version: 1.7.0
140
+ version: 1.8.0
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: pg
143
143
  requirement: !ruby/object:Gem::Requirement
144
144
  requirements:
145
145
  - - "~>"
146
146
  - !ruby/object:Gem::Version
147
- version: 0.19.0
147
+ version: 0.20.0
148
148
  type: :runtime
149
149
  prerelease: false
150
150
  version_requirements: !ruby/object:Gem::Requirement
151
151
  requirements:
152
152
  - - "~>"
153
153
  - !ruby/object:Gem::Version
154
- version: 0.19.0
154
+ version: 0.20.0
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: pickup
157
157
  requirement: !ruby/object:Gem::Requirement
@@ -172,21 +172,21 @@ dependencies:
172
172
  requirements:
173
173
  - - "~>"
174
174
  - !ruby/object:Gem::Version
175
- version: 0.10.4
175
+ version: 0.12.2
176
176
  type: :runtime
177
177
  prerelease: false
178
178
  version_requirements: !ruby/object:Gem::Requirement
179
179
  requirements:
180
180
  - - "~>"
181
181
  - !ruby/object:Gem::Version
182
- version: 0.10.4
182
+ version: 0.12.2
183
183
  - !ruby/object:Gem::Dependency
184
184
  name: rake
185
185
  requirement: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - "~>"
188
188
  - !ruby/object:Gem::Version
189
- version: 12.0.0
189
+ version: 12.3.2
190
190
  - - ">="
191
191
  - !ruby/object:Gem::Version
192
192
  version: 12.0.0
@@ -196,7 +196,7 @@ dependencies:
196
196
  requirements:
197
197
  - - "~>"
198
198
  - !ruby/object:Gem::Version
199
- version: 12.0.0
199
+ version: 12.3.2
200
200
  - - ">="
201
201
  - !ruby/object:Gem::Version
202
202
  version: 12.0.0
@@ -266,27 +266,27 @@ dependencies:
266
266
  requirements:
267
267
  - - "~>"
268
268
  - !ruby/object:Gem::Version
269
- version: 4.41.0
269
+ version: 5.22.0
270
270
  - - ">="
271
271
  - !ruby/object:Gem::Version
272
- version: 4.41.0
272
+ version: 4.46.0
273
273
  type: :runtime
274
274
  prerelease: false
275
275
  version_requirements: !ruby/object:Gem::Requirement
276
276
  requirements:
277
277
  - - "~>"
278
278
  - !ruby/object:Gem::Version
279
- version: 4.41.0
279
+ version: 5.22.0
280
280
  - - ">="
281
281
  - !ruby/object:Gem::Version
282
- version: 4.41.0
282
+ version: 4.46.0
283
283
  - !ruby/object:Gem::Dependency
284
284
  name: smarter_csv
285
285
  requirement: !ruby/object:Gem::Requirement
286
286
  requirements:
287
287
  - - "~>"
288
288
  - !ruby/object:Gem::Version
289
- version: 1.1.1
289
+ version: 1.2.6
290
290
  - - ">="
291
291
  - !ruby/object:Gem::Version
292
292
  version: 1.1.0
@@ -296,7 +296,7 @@ dependencies:
296
296
  requirements:
297
297
  - - "~>"
298
298
  - !ruby/object:Gem::Version
299
- version: 1.1.1
299
+ version: 1.2.6
300
300
  - - ">="
301
301
  - !ruby/object:Gem::Version
302
302
  version: 1.1.0
@@ -306,7 +306,7 @@ dependencies:
306
306
  requirements:
307
307
  - - "~>"
308
308
  - !ruby/object:Gem::Version
309
- version: 3.1.0
309
+ version: 3.2.3
310
310
  - - ">="
311
311
  - !ruby/object:Gem::Version
312
312
  version: 3.1.0
@@ -316,7 +316,7 @@ dependencies:
316
316
  requirements:
317
317
  - - "~>"
318
318
  - !ruby/object:Gem::Version
319
- version: 3.1.0
319
+ version: 3.2.3
320
320
  - - ">="
321
321
  - !ruby/object:Gem::Version
322
322
  version: 3.1.0
@@ -326,7 +326,7 @@ dependencies:
326
326
  requirements:
327
327
  - - "~>"
328
328
  - !ruby/object:Gem::Version
329
- version: 2.4.0
329
+ version: 2.10.0
330
330
  - - ">="
331
331
  - !ruby/object:Gem::Version
332
332
  version: 2.4.0
@@ -336,7 +336,7 @@ dependencies:
336
336
  requirements:
337
337
  - - "~>"
338
338
  - !ruby/object:Gem::Version
339
- version: 2.4.0
339
+ version: 2.10.0
340
340
  - - ">="
341
341
  - !ruby/object:Gem::Version
342
342
  version: 2.4.0
@@ -346,14 +346,14 @@ dependencies:
346
346
  requirements:
347
347
  - - "~>"
348
348
  - !ruby/object:Gem::Version
349
- version: 0.10.0
349
+ version: 0.20.0
350
350
  type: :development
351
351
  prerelease: false
352
352
  version_requirements: !ruby/object:Gem::Requirement
353
353
  requirements:
354
354
  - - "~>"
355
355
  - !ruby/object:Gem::Version
356
- version: 0.10.0
356
+ version: 0.20.0
357
357
  - !ruby/object:Gem::Dependency
358
358
  name: memory_profiler
359
359
  requirement: !ruby/object:Gem::Requirement
@@ -374,7 +374,7 @@ dependencies:
374
374
  requirements:
375
375
  - - "~>"
376
376
  - !ruby/object:Gem::Version
377
- version: 3.4.2
377
+ version: 3.7.0
378
378
  - - ">="
379
379
  - !ruby/object:Gem::Version
380
380
  version: 3.4.0
@@ -384,7 +384,7 @@ dependencies:
384
384
  requirements:
385
385
  - - "~>"
386
386
  - !ruby/object:Gem::Version
387
- version: 3.4.2
387
+ version: 3.7.0
388
388
  - - ">="
389
389
  - !ruby/object:Gem::Version
390
390
  version: 3.4.0
@@ -394,14 +394,14 @@ dependencies:
394
394
  requirements:
395
395
  - - "~>"
396
396
  - !ruby/object:Gem::Version
397
- version: 0.9.0
397
+ version: 1.0.0
398
398
  type: :development
399
399
  prerelease: false
400
400
  version_requirements: !ruby/object:Gem::Requirement
401
401
  requirements:
402
402
  - - "~>"
403
403
  - !ruby/object:Gem::Version
404
- version: 0.9.0
404
+ version: 1.0.0
405
405
  - !ruby/object:Gem::Dependency
406
406
  name: pry-stack_explorer
407
407
  requirement: !ruby/object:Gem::Requirement
@@ -436,47 +436,47 @@ dependencies:
436
436
  requirements:
437
437
  - - "~>"
438
438
  - !ruby/object:Gem::Version
439
- version: 3.5.0
439
+ version: 3.8.0
440
440
  - - ">="
441
441
  - !ruby/object:Gem::Version
442
- version: 3.5.0
442
+ version: 3.8.0
443
443
  type: :development
444
444
  prerelease: false
445
445
  version_requirements: !ruby/object:Gem::Requirement
446
446
  requirements:
447
447
  - - "~>"
448
448
  - !ruby/object:Gem::Version
449
- version: 3.5.0
449
+ version: 3.8.0
450
450
  - - ">="
451
451
  - !ruby/object:Gem::Version
452
- version: 3.5.0
452
+ version: 3.8.0
453
453
  - !ruby/object:Gem::Dependency
454
454
  name: rspec-core
455
455
  requirement: !ruby/object:Gem::Requirement
456
456
  requirements:
457
457
  - - "~>"
458
458
  - !ruby/object:Gem::Version
459
- version: 3.5.4
459
+ version: 3.8.0
460
460
  - - ">="
461
461
  - !ruby/object:Gem::Version
462
- version: 3.5.0
462
+ version: 3.8.0
463
463
  type: :development
464
464
  prerelease: false
465
465
  version_requirements: !ruby/object:Gem::Requirement
466
466
  requirements:
467
467
  - - "~>"
468
468
  - !ruby/object:Gem::Version
469
- version: 3.5.4
469
+ version: 3.8.0
470
470
  - - ">="
471
471
  - !ruby/object:Gem::Version
472
- version: 3.5.0
472
+ version: 3.8.0
473
473
  - !ruby/object:Gem::Dependency
474
474
  name: rspec-collection_matchers
475
475
  requirement: !ruby/object:Gem::Requirement
476
476
  requirements:
477
477
  - - "~>"
478
478
  - !ruby/object:Gem::Version
479
- version: 1.1.2
479
+ version: 1.2.0
480
480
  - - ">="
481
481
  - !ruby/object:Gem::Version
482
482
  version: 1.1.0
@@ -486,7 +486,7 @@ dependencies:
486
486
  requirements:
487
487
  - - "~>"
488
488
  - !ruby/object:Gem::Version
489
- version: 1.1.2
489
+ version: 1.2.0
490
490
  - - ">="
491
491
  - !ruby/object:Gem::Version
492
492
  version: 1.1.0
@@ -496,14 +496,14 @@ dependencies:
496
496
  requirements:
497
497
  - - "~>"
498
498
  - !ruby/object:Gem::Version
499
- version: 0.16.2
499
+ version: 0.18.0
500
500
  type: :development
501
501
  prerelease: false
502
502
  version_requirements: !ruby/object:Gem::Requirement
503
503
  requirements:
504
504
  - - "~>"
505
505
  - !ruby/object:Gem::Version
506
- version: 0.16.2
506
+ version: 0.18.0
507
507
  - !ruby/object:Gem::Dependency
508
508
  name: scrutinizer-ocular
509
509
  requirement: !ruby/object:Gem::Requirement
@@ -530,14 +530,14 @@ dependencies:
530
530
  requirements:
531
531
  - - "~>"
532
532
  - !ruby/object:Gem::Version
533
- version: 0.12.0
533
+ version: 0.17.0
534
534
  type: :development
535
535
  prerelease: false
536
536
  version_requirements: !ruby/object:Gem::Requirement
537
537
  requirements:
538
538
  - - "~>"
539
539
  - !ruby/object:Gem::Version
540
- version: 0.12.0
540
+ version: 0.17.0
541
541
  - !ruby/object:Gem::Dependency
542
542
  name: yard
543
543
  requirement: !ruby/object:Gem::Requirement
@@ -572,21 +572,21 @@ dependencies:
572
572
  requirements:
573
573
  - - "~>"
574
574
  - !ruby/object:Gem::Version
575
- version: 0.4.5
575
+ version: 0.5.2
576
576
  type: :runtime
577
577
  prerelease: false
578
578
  version_requirements: !ruby/object:Gem::Requirement
579
579
  requirements:
580
580
  - - "~>"
581
581
  - !ruby/object:Gem::Version
582
- version: 0.4.5
582
+ version: 0.5.2
583
583
  - !ruby/object:Gem::Dependency
584
584
  name: pry-rescue
585
585
  requirement: !ruby/object:Gem::Requirement
586
586
  requirements:
587
587
  - - "~>"
588
588
  - !ruby/object:Gem::Version
589
- version: 1.4.4
589
+ version: 1.5.0
590
590
  - - ">="
591
591
  - !ruby/object:Gem::Version
592
592
  version: 1.4.0
@@ -596,7 +596,7 @@ dependencies:
596
596
  requirements:
597
597
  - - "~>"
598
598
  - !ruby/object:Gem::Version
599
- version: 1.4.4
599
+ version: 1.5.0
600
600
  - - ">="
601
601
  - !ruby/object:Gem::Version
602
602
  version: 1.4.0
@@ -606,14 +606,14 @@ dependencies:
606
606
  requirements:
607
607
  - - "~>"
608
608
  - !ruby/object:Gem::Version
609
- version: 0.7.2
609
+ version: 0.8.0
610
610
  type: :development
611
611
  prerelease: false
612
612
  version_requirements: !ruby/object:Gem::Requirement
613
613
  requirements:
614
614
  - - "~>"
615
615
  - !ruby/object:Gem::Version
616
- version: 0.7.2
616
+ version: 0.8.0
617
617
  description:
618
618
  email: mmior@uwaterloo.ca
619
619
  executables: []
@@ -702,12 +702,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
702
702
  version: '0'
703
703
  required_rubygems_version: !ruby/object:Gem::Requirement
704
704
  requirements:
705
- - - ">"
705
+ - - ">="
706
706
  - !ruby/object:Gem::Version
707
- version: 1.3.1
707
+ version: '0'
708
708
  requirements: []
709
- rubyforge_project:
710
- rubygems_version: 2.5.2
709
+ rubygems_version: 3.1.2
711
710
  signing_key:
712
711
  specification_version: 4
713
712
  summary: Schema design for NoSQL applications