activemodel-datastore 0.2.3 → 0.5.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 +5 -5
- data/CHANGELOG.md +20 -0
- data/README.md +4 -2
- data/lib/active_model/datastore.rb +16 -10
- data/lib/active_model/datastore/connection.rb +6 -9
- data/lib/active_model/datastore/excluded_indexes.rb +38 -0
- data/lib/active_model/datastore/nested_attr.rb +5 -4
- data/lib/active_model/datastore/property_values.rb +1 -0
- data/lib/active_model/datastore/track_changes.rb +4 -3
- data/lib/active_model/datastore/version.rb +1 -1
- data/lib/activemodel/datastore.rb +1 -0
- metadata +35 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: c8befe5fdd25af32f0024fe2b4c2ce59c15bd153af554bf2941e7cabc2724e84
|
4
|
+
data.tar.gz: d189bd5a085a3fb18de7afff018f7a9db64ed6122aeb38ab120f272cc49ec6c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ca3683674b1066054f609751dc89f55b500c50b3aae1a84c1b49026bdfb169e0002a62a3cfa101f1c97e78231297ecba4ccf0bc940c192d421a1fb185d39372f
|
7
|
+
data.tar.gz: f9b0e617008082832350f11dffa172b6861a2ff586a1ef4c0a638c2187a5f9a3e98088c596b40fc098ecf3d7df4a0dddf142b59876d6b3a1a6fbb34eb5705b10
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
### 0.5.0 / 2020-08-17
|
2
|
+
* adding support Google::Cloud::Datastore 2.0.0 (rewritten low-level client, with improved performance and stability).
|
3
|
+
|
4
|
+
### 0.4.0 / 2019-08-23
|
5
|
+
* adding support for Rails 6
|
6
|
+
|
7
|
+
### 0.3.0 / 2018-04-17
|
8
|
+
* adding Travis CI configuration (rud)
|
9
|
+
* no longer override connection related environment variables if already defined(shao1555)
|
10
|
+
* adding support for passing query an array of select properties
|
11
|
+
|
12
|
+
### 0.2.5 / 2017-11-06
|
13
|
+
* adding support for setting indexed false on individual entity properties
|
14
|
+
* updating example Cloud Datastore Rails app to 5.1.4
|
15
|
+
* retry on exceptions are now specific to Google::Cloud::Error
|
16
|
+
|
17
|
+
### 0.2.4 / 2017-10-31
|
18
|
+
* non-Rails projects now source client authentication settings automatically (rjmooney)
|
19
|
+
* documentation improvements
|
20
|
+
|
1
21
|
### 0.2.3 / 2017-05-24
|
2
22
|
* adding CarrierWave file upload support
|
3
23
|
* updating example Cloud Datastore Rails app to 5.1
|
data/README.md
CHANGED
@@ -13,6 +13,7 @@ automatically scales to handle your applications' load. Cloud Datastore is a sch
|
|
13
13
|
suited for unstructured or semi-structured application data.
|
14
14
|
|
15
15
|
[](https://badge.fury.io/rb/activemodel-datastore)
|
16
|
+
[](https://travis-ci.org/Agrimatics/activemodel-datastore)
|
16
17
|
|
17
18
|
## Table of contents
|
18
19
|
|
@@ -126,8 +127,8 @@ end
|
|
126
127
|
```
|
127
128
|
|
128
129
|
Callbacks work as you would expect. We have also added the ability to set default values through
|
129
|
-
[`default_property_value`](http://www.rubydoc.info/gems/activemodel-datastore/ActiveModel
|
130
|
-
and type cast the format of values through [`format_property_value`](http://www.rubydoc.info/gems/activemodel-datastore/ActiveModel
|
130
|
+
[`default_property_value`](http://www.rubydoc.info/gems/activemodel-datastore/ActiveModel/Datastore/PropertyValues#default_property_value-instance_method)
|
131
|
+
and type cast the format of values through [`format_property_value`](http://www.rubydoc.info/gems/activemodel-datastore/ActiveModel/Datastore/PropertyValues#format_property_value-instance_method):
|
131
132
|
|
132
133
|
```ruby
|
133
134
|
class User
|
@@ -254,6 +255,7 @@ users, cursor = User.all(limit: 7)
|
|
254
255
|
# @option options [String] :order Sort the results by property name.
|
255
256
|
# @option options [String] :desc_order Sort the results by descending property name.
|
256
257
|
# @option options [Array] :select Retrieve only select properties from the matched entities.
|
258
|
+
# @option options [Array] :distinct_on Group results by a list of properties.
|
257
259
|
# @option options [Array] :where Adds a property filter of arrays in the format[name, operator, value].
|
258
260
|
```
|
259
261
|
|
@@ -114,6 +114,7 @@ module ActiveModel::Datastore
|
|
114
114
|
include ActiveModel::Dirty
|
115
115
|
include ActiveModel::Validations
|
116
116
|
include ActiveModel::Validations::Callbacks
|
117
|
+
include ActiveModel::Datastore::ExcludedIndexes
|
117
118
|
include ActiveModel::Datastore::NestedAttr
|
118
119
|
include ActiveModel::Datastore::PropertyValues
|
119
120
|
include ActiveModel::Datastore::TrackChanges
|
@@ -153,12 +154,14 @@ module ActiveModel::Datastore
|
|
153
154
|
entity = CloudDatastore.dataset.entity self.class.name, id
|
154
155
|
if parent.present?
|
155
156
|
raise ArgumentError, 'Must be a Key' unless parent.is_a? Google::Cloud::Datastore::Key
|
157
|
+
|
156
158
|
entity.key.parent = parent
|
157
159
|
elsif parent?
|
158
160
|
entity.key.parent = self.class.parent_key(parent_key_id)
|
159
161
|
end
|
160
162
|
entity_properties.each do |attr|
|
161
163
|
entity[attr] = instance_variable_get("@#{attr}")
|
164
|
+
entity.exclude_from_indexes!(attr, true) if no_index_attributes.include? attr
|
162
165
|
end
|
163
166
|
entity
|
164
167
|
end
|
@@ -168,7 +171,7 @@ module ActiveModel::Datastore
|
|
168
171
|
end
|
169
172
|
|
170
173
|
##
|
171
|
-
# For compatibility with libraries that require the bang method version (example,
|
174
|
+
# For compatibility with libraries that require the bang method version (example, factory_bot).
|
172
175
|
#
|
173
176
|
def save!
|
174
177
|
save_entity || raise(EntityNotSavedError, 'Failed to save the entity')
|
@@ -177,6 +180,7 @@ module ActiveModel::Datastore
|
|
177
180
|
def update(params)
|
178
181
|
assign_attributes(params)
|
179
182
|
return unless valid?
|
183
|
+
|
180
184
|
run_callbacks :update do
|
181
185
|
entity = build_entity
|
182
186
|
self.class.retry_on_exception? { CloudDatastore.dataset.save entity }
|
@@ -195,6 +199,7 @@ module ActiveModel::Datastore
|
|
195
199
|
|
196
200
|
def save_entity(parent = nil)
|
197
201
|
return unless valid?
|
202
|
+
|
198
203
|
run_callbacks :save do
|
199
204
|
entity = build_entity(parent)
|
200
205
|
success = self.class.retry_on_exception? { CloudDatastore.dataset.save entity }
|
@@ -271,6 +276,7 @@ module ActiveModel::Datastore
|
|
271
276
|
# @option options [String] :order Sort the results by property name.
|
272
277
|
# @option options [String] :desc_order Sort the results by descending property name.
|
273
278
|
# @option options [Array] :select Retrieve only select properties from the matched entities.
|
279
|
+
# @option options [Array] :distinct_on Group results by a list of properties.
|
274
280
|
# @option options [Array] :where Adds a property filter of arrays in the format
|
275
281
|
# [name, operator, value].
|
276
282
|
#
|
@@ -350,6 +356,7 @@ module ActiveModel::Datastore
|
|
350
356
|
#
|
351
357
|
def from_entities(entities)
|
352
358
|
raise ArgumentError, 'Entities param must be an Enumerator' unless entities.is_a? Enumerator
|
359
|
+
|
353
360
|
entities.map { |entity| from_entity(entity) }
|
354
361
|
end
|
355
362
|
|
@@ -361,6 +368,7 @@ module ActiveModel::Datastore
|
|
361
368
|
#
|
362
369
|
def from_entity(entity)
|
363
370
|
return if entity.nil?
|
371
|
+
|
364
372
|
model_entity = build_model(entity)
|
365
373
|
model_entity.entity_property_values = entity.properties.to_h
|
366
374
|
entity.properties.to_h.each do |name, value|
|
@@ -370,12 +378,6 @@ module ActiveModel::Datastore
|
|
370
378
|
model_entity
|
371
379
|
end
|
372
380
|
|
373
|
-
def exclude_from_index(entity, boolean)
|
374
|
-
entity.properties.to_h.keys.each do |value|
|
375
|
-
entity.exclude_from_indexes! value, boolean
|
376
|
-
end
|
377
|
-
end
|
378
|
-
|
379
381
|
##
|
380
382
|
# Constructs a Google::Cloud::Datastore::Query.
|
381
383
|
#
|
@@ -387,6 +389,7 @@ module ActiveModel::Datastore
|
|
387
389
|
# @option options [String] :order Sort the results by property name.
|
388
390
|
# @option options [String] :desc_order Sort the results by descending property name.
|
389
391
|
# @option options [Array] :select Retrieve only select properties from the matched entities.
|
392
|
+
# @option options [Array] :distinct_on Group results by a list of properties.
|
390
393
|
# @option options [Array] :where Adds a property filter of arrays in the format
|
391
394
|
# [name, operator, value].
|
392
395
|
#
|
@@ -402,8 +405,9 @@ module ActiveModel::Datastore
|
|
402
405
|
sleep_time = 0.25
|
403
406
|
begin
|
404
407
|
yield
|
405
|
-
rescue => e
|
408
|
+
rescue Google::Cloud::Error => e
|
406
409
|
return false if retries >= max_retry_count
|
410
|
+
|
407
411
|
puts "\e[33mRescued exception #{e.message.inspect}, retrying in #{sleep_time}\e[0m"
|
408
412
|
# 0.25, 0.5, 1, 2, and 4 second between retries.
|
409
413
|
sleep sleep_time
|
@@ -418,8 +422,9 @@ module ActiveModel::Datastore
|
|
418
422
|
sleep_time = 0.25
|
419
423
|
begin
|
420
424
|
yield
|
421
|
-
rescue => e
|
425
|
+
rescue Google::Cloud::Error => e
|
422
426
|
raise e if retries >= max_retry_count
|
427
|
+
|
423
428
|
puts "\e[33mRescued exception #{e.message.inspect}, retrying in #{sleep_time}\e[0m"
|
424
429
|
# 0.25, 0.5, 1, 2, and 4 second between retries.
|
425
430
|
sleep sleep_time
|
@@ -443,7 +448,8 @@ module ActiveModel::Datastore
|
|
443
448
|
query.cursor(options[:cursor]) if options[:cursor]
|
444
449
|
query.limit(options[:limit]) if options[:limit]
|
445
450
|
query_sort(query, options)
|
446
|
-
query.select(options[:select]) if options[:select]
|
451
|
+
query.select(*options[:select]) if options[:select]
|
452
|
+
query.distinct_on(*options[:distinct_on]) if options[:distinct_on]
|
447
453
|
query_property_filter(query, options)
|
448
454
|
end
|
449
455
|
|
@@ -14,23 +14,20 @@
|
|
14
14
|
module CloudDatastore
|
15
15
|
if defined?(Rails) == 'constant'
|
16
16
|
if Rails.env.development?
|
17
|
-
ENV['DATASTORE_EMULATOR_HOST']
|
18
|
-
ENV['GCLOUD_PROJECT']
|
17
|
+
ENV['DATASTORE_EMULATOR_HOST'] ||= 'localhost:8180'
|
18
|
+
ENV['GCLOUD_PROJECT'] ||= 'local-datastore'
|
19
19
|
elsif Rails.env.test?
|
20
|
-
ENV['DATASTORE_EMULATOR_HOST']
|
21
|
-
ENV['GCLOUD_PROJECT']
|
20
|
+
ENV['DATASTORE_EMULATOR_HOST'] ||= 'localhost:8181'
|
21
|
+
ENV['GCLOUD_PROJECT'] ||= 'test-datastore'
|
22
22
|
elsif ENV['SERVICE_ACCOUNT_PRIVATE_KEY'].present? &&
|
23
23
|
ENV['SERVICE_ACCOUNT_CLIENT_EMAIL'].present?
|
24
|
-
ENV['GCLOUD_KEYFILE_JSON']
|
24
|
+
ENV['GCLOUD_KEYFILE_JSON'] ||= '{"private_key": "' + ENV['SERVICE_ACCOUNT_PRIVATE_KEY'] + '",
|
25
25
|
"client_email": "' + ENV['SERVICE_ACCOUNT_CLIENT_EMAIL'] + '"}'
|
26
26
|
end
|
27
|
-
else
|
28
|
-
ENV['DATASTORE_EMULATOR_HOST'] = 'localhost:8181'
|
29
|
-
ENV['GCLOUD_PROJECT'] = 'test-datastore'
|
30
27
|
end
|
31
28
|
|
32
29
|
def self.dataset
|
33
|
-
@dataset ||= Google::Cloud.datastore
|
30
|
+
@dataset ||= Google::Cloud.datastore
|
34
31
|
end
|
35
32
|
|
36
33
|
def self.reset_dataset
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module ActiveModel::Datastore
|
2
|
+
module ExcludedIndexes
|
3
|
+
extend ActiveSupport::Concern
|
4
|
+
|
5
|
+
def no_index_attributes
|
6
|
+
[]
|
7
|
+
end
|
8
|
+
|
9
|
+
##
|
10
|
+
# Sets all entity properties to be included/excluded from the Datastore indexes.
|
11
|
+
#
|
12
|
+
def exclude_from_index(entity, boolean)
|
13
|
+
entity.properties.to_h.each_key do |value|
|
14
|
+
entity.exclude_from_indexes! value, boolean
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
module ClassMethods
|
19
|
+
##
|
20
|
+
# Sets attributes to be excluded from the Datastore indexes.
|
21
|
+
#
|
22
|
+
# Overrides no_index_attributes to return an Array of the attributes configured
|
23
|
+
# to be indexed.
|
24
|
+
#
|
25
|
+
# For example, an indexed string property can not exceed 1500 bytes. String properties
|
26
|
+
# that are not indexed can be up to 1,048,487 bytes. All properties indexed by default.
|
27
|
+
#
|
28
|
+
def no_indexes(*attributes)
|
29
|
+
attributes = attributes.collect(&:to_s)
|
30
|
+
define_method('no_index_attributes') { attributes }
|
31
|
+
end
|
32
|
+
|
33
|
+
def clear_index_exclusions!
|
34
|
+
define_method('no_index_attributes') { [] }
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -105,9 +105,7 @@ module ActiveModel::Datastore
|
|
105
105
|
|
106
106
|
def nested_model_class_names
|
107
107
|
entity_kinds = []
|
108
|
-
if nested_attributes?
|
109
|
-
nested_models.each { |x| entity_kinds << x.class.name }
|
110
|
-
end
|
108
|
+
nested_models.each { |x| entity_kinds << x.class.name } if nested_attributes?
|
111
109
|
entity_kinds.uniq
|
112
110
|
end
|
113
111
|
|
@@ -159,7 +157,7 @@ module ActiveModel::Datastore
|
|
159
157
|
association_name = association_name.to_sym
|
160
158
|
send("#{association_name}=", []) if send(association_name).nil?
|
161
159
|
|
162
|
-
attributes.
|
160
|
+
attributes.each_value do |params|
|
163
161
|
if params['id'].blank?
|
164
162
|
unless reject_new_record?(params, options)
|
165
163
|
new = association_name.to_c.new(params.except(*UNASSIGNABLE_KEYS))
|
@@ -182,6 +180,7 @@ module ActiveModel::Datastore
|
|
182
180
|
unless attributes.is_a?(Hash)
|
183
181
|
raise ArgumentError, "Hash expected, got #{attributes.class.name} (#{attributes.inspect})"
|
184
182
|
end
|
183
|
+
|
185
184
|
attributes
|
186
185
|
end
|
187
186
|
|
@@ -216,6 +215,7 @@ module ActiveModel::Datastore
|
|
216
215
|
#
|
217
216
|
def call_reject_if(attributes, options)
|
218
217
|
return false if destroy_flag?(attributes)
|
218
|
+
|
219
219
|
attributes = attributes.with_indifferent_access
|
220
220
|
blank_proc = proc { |attrs| attrs.all? { |_key, value| value.blank? } }
|
221
221
|
options[:reject_if] = blank_proc if options[:reject_if] == :all_blank
|
@@ -247,6 +247,7 @@ module ActiveModel::Datastore
|
|
247
247
|
class AssociatedValidator < ActiveModel::EachValidator
|
248
248
|
def validate_each(record, attribute, value)
|
249
249
|
return unless Array(value).reject(&:valid?).any?
|
250
|
+
|
250
251
|
record.errors.add(attribute, :invalid, options.merge(value: value))
|
251
252
|
end
|
252
253
|
end
|
@@ -70,12 +70,12 @@ module ActiveModel::Datastore
|
|
70
70
|
unless tracked_attributes.present?
|
71
71
|
raise TrackChangesError, 'Object has not been configured for change tracking.'
|
72
72
|
end
|
73
|
+
|
73
74
|
changed = marked_for_destruction? ? true : false
|
74
75
|
tracked_attributes.each do |attr|
|
75
76
|
break if changed
|
76
|
-
|
77
|
-
|
78
|
-
end
|
77
|
+
|
78
|
+
changed = send(attr) != send("#{attr}_was") if send("#{attr}_changed?")
|
79
79
|
end
|
80
80
|
self.exclude_from_save = !changed
|
81
81
|
changed
|
@@ -83,6 +83,7 @@ module ActiveModel::Datastore
|
|
83
83
|
|
84
84
|
def remove_unmodified_children
|
85
85
|
return unless tracked_attributes.present? && nested_attributes?
|
86
|
+
|
86
87
|
nested_attributes.each do |attr|
|
87
88
|
with_changes = Array(send(attr.to_sym)).select(&:values_changed?)
|
88
89
|
send("#{attr}=", with_changes)
|
@@ -7,6 +7,7 @@ require 'active_model'
|
|
7
7
|
|
8
8
|
require 'active_model/datastore/connection'
|
9
9
|
require 'active_model/datastore/errors'
|
10
|
+
require 'active_model/datastore/excluded_indexes'
|
10
11
|
require 'active_model/datastore/nested_attr'
|
11
12
|
require 'active_model/datastore/property_values'
|
12
13
|
require 'active_model/datastore/track_changes'
|
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activemodel-datastore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bryce McLean
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-08-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 5.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 5.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activesupport
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 5.0.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 5.0.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: google-cloud-datastore
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
47
|
+
version: '2.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
54
|
+
version: '2.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,50 +70,50 @@ dependencies:
|
|
70
70
|
name: actionpack
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 5.0.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 5.0.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: factory_bot
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '6.1'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '6.1'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: faker
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
101
|
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: '1
|
103
|
+
version: '2.1'
|
104
104
|
- - ">="
|
105
105
|
- !ruby/object:Gem::Version
|
106
|
-
version: 1.
|
106
|
+
version: 2.1.2
|
107
107
|
type: :development
|
108
108
|
prerelease: false
|
109
109
|
version_requirements: !ruby/object:Gem::Requirement
|
110
110
|
requirements:
|
111
111
|
- - "~>"
|
112
112
|
- !ruby/object:Gem::Version
|
113
|
-
version: '1
|
113
|
+
version: '2.1'
|
114
114
|
- - ">="
|
115
115
|
- !ruby/object:Gem::Version
|
116
|
-
version: 1.
|
116
|
+
version: 2.1.2
|
117
117
|
- !ruby/object:Gem::Dependency
|
118
118
|
name: minitest
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
@@ -128,26 +128,6 @@ dependencies:
|
|
128
128
|
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
130
|
version: '5.10'
|
131
|
-
- !ruby/object:Gem::Dependency
|
132
|
-
name: minitest-reporters
|
133
|
-
requirement: !ruby/object:Gem::Requirement
|
134
|
-
requirements:
|
135
|
-
- - "~>"
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: '1.1'
|
138
|
-
- - ">="
|
139
|
-
- !ruby/object:Gem::Version
|
140
|
-
version: 1.1.14
|
141
|
-
type: :development
|
142
|
-
prerelease: false
|
143
|
-
version_requirements: !ruby/object:Gem::Requirement
|
144
|
-
requirements:
|
145
|
-
- - "~>"
|
146
|
-
- !ruby/object:Gem::Version
|
147
|
-
version: '1.1'
|
148
|
-
- - ">="
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
version: 1.1.14
|
151
131
|
- !ruby/object:Gem::Dependency
|
152
132
|
name: rubocop
|
153
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -168,14 +148,14 @@ dependencies:
|
|
168
148
|
requirements:
|
169
149
|
- - "~>"
|
170
150
|
- !ruby/object:Gem::Version
|
171
|
-
version: '
|
151
|
+
version: '2.1'
|
172
152
|
type: :development
|
173
153
|
prerelease: false
|
174
154
|
version_requirements: !ruby/object:Gem::Requirement
|
175
155
|
requirements:
|
176
156
|
- - "~>"
|
177
157
|
- !ruby/object:Gem::Version
|
178
|
-
version: '
|
158
|
+
version: '2.1'
|
179
159
|
description: Makes the google-cloud-datastore gem compliant with active_model conventions
|
180
160
|
and compatible with your Rails 5+ applications.
|
181
161
|
email:
|
@@ -191,6 +171,7 @@ files:
|
|
191
171
|
- lib/active_model/datastore/carrier_wave_uploader.rb
|
192
172
|
- lib/active_model/datastore/connection.rb
|
193
173
|
- lib/active_model/datastore/errors.rb
|
174
|
+
- lib/active_model/datastore/excluded_indexes.rb
|
194
175
|
- lib/active_model/datastore/nested_attr.rb
|
195
176
|
- lib/active_model/datastore/property_values.rb
|
196
177
|
- lib/active_model/datastore/track_changes.rb
|
@@ -199,8 +180,12 @@ files:
|
|
199
180
|
homepage: https://github.com/Agrimatics/activemodel-datastore
|
200
181
|
licenses:
|
201
182
|
- MIT
|
202
|
-
metadata:
|
203
|
-
|
183
|
+
metadata:
|
184
|
+
homepage_uri: https://github.com/Agrimatics/activemodel-datastore
|
185
|
+
changelog_uri: https://github.com/Agrimatics/activemodel-datastore/blob/master/CHANGELOG.md
|
186
|
+
source_code_uri: https://github.com/Agrimatics/activemodel-datastore/
|
187
|
+
bug_tracker_uri: https://github.com/Agrimatics/activemodel-datastore/issues
|
188
|
+
post_install_message:
|
204
189
|
rdoc_options: []
|
205
190
|
require_paths:
|
206
191
|
- lib
|
@@ -215,9 +200,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
215
200
|
- !ruby/object:Gem::Version
|
216
201
|
version: '0'
|
217
202
|
requirements: []
|
218
|
-
|
219
|
-
|
220
|
-
signing_key:
|
203
|
+
rubygems_version: 3.0.8
|
204
|
+
signing_key:
|
221
205
|
specification_version: 4
|
222
206
|
summary: Cloud Datastore integration with Active Model
|
223
207
|
test_files: []
|