active_remote 2.2.0 → 2.3.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ad233ac94027246310c94addc5e595b1cb6d25fb
4
- data.tar.gz: 0a1985fd4e52f98fb757fccdb04ccd097ee4abd4
3
+ metadata.gz: c89356033a37c579df65b431907bfdff0754d560
4
+ data.tar.gz: 3c31cbc7d4f0ac128112374a4baf7fe847d18adf
5
5
  SHA512:
6
- metadata.gz: 7dabce988979749626a43fa3ddcfbaa2df930f8c70e57c172e6a89c7390d9ab11e47def151c2b7773cf486572b719affcb41e329e0aca7e40a00a16389c6172c
7
- data.tar.gz: 9c57148a75afc5dd51f5ec5a6d31e96c446888153099c38cc970a2d04a57431a194022fcd88a21d057c319e11f5d20d6e6563b4b5f87cf8b4fef2af1a72202ca
6
+ metadata.gz: 96e1753ea1f51bbe1a64bc40dc39c76d9cb35f2dd27be42cfecb3b4628c8953819fe590b1c480439db6422208e2bad84dfa3913c230d054b1e7af1b209fc16d5
7
+ data.tar.gz: 300112bd7a7cb192297ef6f668d7366f2d9d6acd2ab9f0de377ad75ac1ca8d893e1d46b15363e8cc023f691713441e4c62c671f38663ce01c8f4ef1084edd986
data/.rspec CHANGED
@@ -1,2 +1,3 @@
1
1
  --order rand
2
- --format RSpec::Pride
2
+ --require rspec/pride
3
+ --format PrideFormatter
@@ -26,12 +26,11 @@ Gem::Specification.new do |s|
26
26
  ##
27
27
  # Development Dependencies
28
28
  #
29
- s.add_development_dependency "better_receive"
30
29
  s.add_development_dependency "rake"
31
- s.add_development_dependency "rspec"
30
+ s.add_development_dependency "rspec", ">= 3.3.0"
32
31
  s.add_development_dependency "rspec-its"
33
- s.add_development_dependency "rspec-pride"
32
+ s.add_development_dependency "rspec-pride", ">= 3.1.0"
34
33
  s.add_development_dependency "pry"
35
- s.add_development_dependency "protobuf-rspec", ">= 1.0"
34
+ s.add_development_dependency "protobuf-rspec", ">= 1.1.2"
36
35
  s.add_development_dependency "simplecov"
37
36
  end
@@ -202,6 +202,22 @@ module ActiveRemote
202
202
  return ! has_errors?
203
203
  end
204
204
 
205
+ # Updates a single attribute and saves the record.
206
+ # This is especially useful for boolean flags on existing records. Also note that
207
+ #
208
+ # * Validation is skipped.
209
+ # * Callbacks are invoked.
210
+ # * Updates all the attributes that are dirty in this object.
211
+ #
212
+ # This method raises an ActiveRemote::ReadOnlyRemoteRecord if the
213
+ # attribute is marked as readonly.
214
+ def update_attribute(name, value)
215
+ raise ReadOnlyRemoteRecord if readonly?
216
+ name = name.to_s
217
+ send("#{name}=", value)
218
+ save(:validate => false)
219
+ end
220
+
205
221
  # Updates the attributes of the remote record from the passed-in hash and
206
222
  # saves the remote record. If the object is invalid, it will have error
207
223
  # messages and false will be returned.
@@ -210,6 +226,7 @@ module ActiveRemote
210
226
  assign_attributes(attributes)
211
227
  save
212
228
  end
229
+ alias_method :update, :update_attributes
213
230
 
214
231
  # Updates the attributes of the remote record from the passed-in hash and
215
232
  # saves the remote record. If the object is invalid, an
@@ -219,13 +236,14 @@ module ActiveRemote
219
236
  assign_attributes(attributes)
220
237
  save!
221
238
  end
239
+ alias_method :update!, :update_attributes!
222
240
 
223
241
  private
224
242
 
225
243
  # Handles creating a remote object and serializing it's attributes and
226
244
  # errors from the response.
227
245
  #
228
- def create
246
+ def remote_create
229
247
  run_callbacks :create do
230
248
  # Use the getter here so we get the type casting.
231
249
  new_attributes = attributes
@@ -247,14 +265,14 @@ module ActiveRemote
247
265
  #
248
266
  def create_or_update(*args)
249
267
  raise ReadOnlyRemoteRecord if readonly?
250
- new_record? ? create : update(*args)
268
+ new_record? ? remote_create : remote_update(*args)
251
269
  end
252
270
 
253
271
  # Handles updating a remote object and serializing it's attributes and
254
272
  # errors from the response. Only attributes with the given attribute names
255
273
  # (plus :guid) will be updated. Defaults to all attributes.
256
274
  #
257
- def update(attribute_names = @attributes.keys)
275
+ def remote_update(attribute_names = @attributes.keys)
258
276
  run_callbacks :update do
259
277
  # Use the getter here so we get the type casting.
260
278
  updated_attributes = attributes
@@ -134,9 +134,7 @@ module ActiveRemote
134
134
  # Reload this record from the remote service.
135
135
  #
136
136
  def reload
137
- response = self.class.find(scope_key_hash)
138
-
139
- fresh_object = self.class.instantiate(response.to_hash)
137
+ fresh_object = self.class.find(scope_key_hash)
140
138
  @attributes.update(fresh_object.instance_variable_get('@attributes'))
141
139
  end
142
140
  end
@@ -1,3 +1,3 @@
1
1
  module ActiveRemote
2
- VERSION = "2.2.0"
2
+ VERSION = "2.3.0"
3
3
  end
@@ -47,18 +47,18 @@ describe ActiveRemote::Association do
47
47
  end
48
48
 
49
49
  context 'when user_guid doesnt exist on model 'do
50
- before { allow(subject).to receive(:respond_to?).with("user_guid").and_return(false) }
50
+ before { allow(subject.class).to receive_message_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
51
51
 
52
52
  it 'raises an error' do
53
- expect {subject.user}.to raise_error
53
+ expect {subject.user}.to raise_error(::RuntimeError, /Could not find attribute/)
54
54
  end
55
55
  end
56
56
 
57
57
  context 'when user_guid doesnt exist on associated model 'do
58
- before { Author.stub_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
58
+ before { allow(Author).to receive_message_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
59
59
 
60
60
  it 'raises an error' do
61
- expect {subject.user}.to raise_error
61
+ expect {subject.user}.to raise_error(::RuntimeError, /Could not find attribute/)
62
62
  end
63
63
  end
64
64
  end
@@ -154,15 +154,15 @@ describe ActiveRemote::Association do
154
154
  before { allow(subject).to receive(:respond_to?).with("user_guid").and_return(false) }
155
155
 
156
156
  it 'raises an error' do
157
- expect {subject.user_posts}.to raise_error
157
+ expect {subject.user_posts}.to raise_error(::ActiveAttr::UnknownAttributeError)
158
158
  end
159
159
  end
160
160
 
161
161
  context 'when user_guid doesnt exist on associated model 'do
162
- before { Post.stub_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
162
+ before { allow(Post).to receive_message_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
163
163
 
164
164
  it 'raises an error' do
165
- expect {subject.user_posts}.to raise_error
165
+ expect {subject.user_posts}.to raise_error(::RuntimeError, /Could not find attribute/)
166
166
  end
167
167
  end
168
168
  end
@@ -237,15 +237,15 @@ describe ActiveRemote::Association do
237
237
  before { allow(subject).to receive(:respond_to?).with("user_guid").and_return(false) }
238
238
 
239
239
  it 'raises an error' do
240
- expect {subject.chief_editor}.to raise_error
240
+ expect {subject.chief_editor}.to raise_error(::ActiveAttr::UnknownAttributeError)
241
241
  end
242
242
  end
243
243
 
244
244
  context 'when user_guid doesnt exist on associated model 'do
245
- before { Author.stub_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
245
+ before { allow(Author).to receive_message_chain(:public_instance_methods, :include?).with(:user_guid).and_return(false) }
246
246
 
247
247
  it 'raises an error' do
248
- expect {subject.chief_editor}.to raise_error
248
+ expect {subject.chief_editor}.to raise_error(::RuntimeError, /Could not find attribute/)
249
249
  end
250
250
  end
251
251
  end
@@ -6,15 +6,15 @@ describe ActiveRemote::Bulk do
6
6
  let(:response) { double(:response, :records => []) }
7
7
  let(:rpc) { ::ActiveRemote::RPCAdapters::ProtobufAdapter.new(::Tag.service_class) }
8
8
 
9
- before { rpc.better_stub(:execute).and_return(response) }
10
- before { ::Tag.better_stub(:rpc).and_return(rpc) }
9
+ before { allow(rpc).to receive(:execute).and_return(response) }
10
+ before { allow(::Tag).to receive(:rpc).and_return(rpc) }
11
11
 
12
12
  context "given an empty array" do
13
13
  let(:parsed_records) { { :records => records } }
14
14
  let(:records) { [] }
15
15
 
16
16
  it "calls #{bulk_method} with parsed records" do
17
- rpc.better_receive(:execute).with(bulk_method, parsed_records)
17
+ expect(rpc).to receive(:execute).with(bulk_method, parsed_records)
18
18
  Tag.__send__(bulk_method, records)
19
19
  end
20
20
  end
@@ -25,7 +25,7 @@ describe ActiveRemote::Bulk do
25
25
  let(:records) { [ hash_record ] }
26
26
 
27
27
  it "calls #{bulk_method} with parsed records" do
28
- rpc.better_receive(:execute).with(bulk_method, parsed_records)
28
+ expect(rpc).to receive(:execute).with(bulk_method, parsed_records)
29
29
  Tag.__send__(bulk_method, records)
30
30
  end
31
31
  end
@@ -36,7 +36,7 @@ describe ActiveRemote::Bulk do
36
36
  let(:remote_record) { double(:remote, :attributes => {}) }
37
37
 
38
38
  it "calls #{bulk_method} with parsed records" do
39
- rpc.better_receive(:execute).with(bulk_method, parsed_records)
39
+ expect(rpc).to receive(:execute).with(bulk_method, parsed_records)
40
40
  Tag.__send__(bulk_method, records)
41
41
  end
42
42
  end
@@ -47,7 +47,7 @@ describe ActiveRemote::Bulk do
47
47
  let(:tags) { Generic::Remote::Tags.new(:records => [ tag ]) }
48
48
 
49
49
  it "calls #{bulk_method} with parsed records" do
50
- rpc.better_receive(:execute).with(bulk_method, parsed_records)
50
+ expect(rpc).to receive(:execute).with(bulk_method, parsed_records)
51
51
  Tag.__send__(bulk_method, tags)
52
52
  end
53
53
  end
@@ -47,7 +47,7 @@ describe ActiveRemote::Dirty do
47
47
  subject { Post.new(:name => 'foo') }
48
48
 
49
49
  before {
50
- allow(Post).to receive(:find).and_return({})
50
+ allow(Post).to receive(:find).and_return(Post.new(:name => 'foo'))
51
51
  subject.reload
52
52
  }
53
53
 
@@ -2,13 +2,13 @@ require 'spec_helper'
2
2
 
3
3
  describe ActiveRemote::Persistence do
4
4
  let(:rpc) { Tag.new }
5
+ let(:response_without_errors) { HashWithIndifferentAccess.new(:errors => []) }
5
6
 
6
7
  subject { Tag.new }
7
8
 
8
9
  before {
9
- rpc.better_stub(:execute).and_return(HashWithIndifferentAccess.new)
10
- allow_any_instance_of(HashWithIndifferentAccess).to receive(:errors).and_return([])
11
- Tag.better_stub(:rpc).and_return(rpc)
10
+ allow(rpc).to receive(:execute).and_return(response_without_errors)
11
+ allow(Tag).to receive(:rpc).and_return(rpc)
12
12
  }
13
13
  after { allow(Tag).to receive(:rpc).and_call_original }
14
14
 
@@ -61,7 +61,7 @@ describe ActiveRemote::Persistence do
61
61
  let(:error) { Generic::Error.new(:field => 'name', :message => 'Boom!') }
62
62
  let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
63
63
 
64
- before { rpc.better_stub(:execute).and_return(response) }
64
+ before { allow(rpc).to receive(:execute).and_return(response) }
65
65
 
66
66
  it "adds the errors to the record" do
67
67
  subject.delete
@@ -84,7 +84,7 @@ describe ActiveRemote::Persistence do
84
84
  let(:error) { Generic::Error.new(:field => 'name', :message => 'Boom!') }
85
85
  let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
86
86
 
87
- before { rpc.better_stub(:execute).and_return(response) }
87
+ before { allow(rpc).to receive(:execute).and_return(response) }
88
88
 
89
89
  it "raises an exception" do
90
90
  expect { subject.delete! }.to raise_error(ActiveRemote::ActiveRemoteError)
@@ -109,7 +109,7 @@ describe ActiveRemote::Persistence do
109
109
  let(:error) { Generic::Error.new(:field => 'name', :message => 'Boom!') }
110
110
  let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
111
111
 
112
- before { rpc.better_stub(:execute).and_return(response) }
112
+ before { allow(rpc).to receive(:execute).and_return(response) }
113
113
 
114
114
  it "adds the errors to the record" do
115
115
  subject.destroy
@@ -132,7 +132,7 @@ describe ActiveRemote::Persistence do
132
132
  let(:error) { Generic::Error.new(:field => 'name', :message => 'Boom!') }
133
133
  let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
134
134
 
135
- before { rpc.better_stub(:execute).and_return(response) }
135
+ before { allow(rpc).to receive(:execute).and_return(response) }
136
136
 
137
137
  it "raises an exception" do
138
138
  expect { subject.destroy! }.to raise_error(ActiveRemote::ActiveRemoteError)
@@ -199,6 +199,7 @@ describe ActiveRemote::Persistence do
199
199
 
200
200
  describe "#save" do
201
201
  it "runs save callbacks" do
202
+ allow(subject).to receive(:run_callbacks).with(:validation).and_return(true)
202
203
  expect(subject).to receive(:run_callbacks).with(:save)
203
204
  subject.save
204
205
  end
@@ -226,14 +227,14 @@ describe ActiveRemote::Persistence do
226
227
 
227
228
  context "when the record is saved" do
228
229
  it "returns true" do
229
- subject.better_stub(:has_errors?) { false }
230
+ allow(subject).to receive(:has_errors?) { false }
230
231
  expect(subject.save).to be_truthy
231
232
  end
232
233
  end
233
234
 
234
235
  context "when the record is not saved" do
235
236
  it "returns false" do
236
- subject.better_stub(:has_errors?) { true }
237
+ allow(subject).to receive(:has_errors?) { true }
237
238
  expect(subject.save).to be_falsey
238
239
  end
239
240
  end
@@ -282,6 +283,36 @@ describe ActiveRemote::Persistence do
282
283
  end
283
284
  end
284
285
 
286
+ describe "#update_attribute" do
287
+ let(:tag) { Tag.allocate.instantiate({:guid => "123"}) }
288
+
289
+ before { allow(Tag.rpc).to receive(:execute).and_return(HashWithIndifferentAccess.new) }
290
+ after { allow(Tag.rpc).to receive(:execute).and_call_original }
291
+
292
+ it "runs update callbacks" do
293
+ expect(tag).to receive(:after_update_callback)
294
+ tag.update_attribute(:name, "foo")
295
+ end
296
+
297
+ it "updates a remote record" do
298
+ expect(Tag.rpc).to receive(:execute).with(:update, tag.scope_key_hash)
299
+ tag.update_attribute(:name, "foo")
300
+ end
301
+
302
+ before { allow(subject).to receive(:save) }
303
+ after { allow(subject).to receive(:save).and_call_original }
304
+
305
+ it "assigns new attributes" do
306
+ expect(subject).to receive(:name=).with("foo")
307
+ subject.update_attribute(:name, "foo")
308
+ end
309
+
310
+ it "saves the record" do
311
+ expect(subject).to receive(:save)
312
+ subject.update_attribute(:name, "foo")
313
+ end
314
+ end
315
+
285
316
  describe "#update_attributes" do
286
317
  let(:attributes) { HashWithIndifferentAccess.new(:name => 'bar') }
287
318
  let(:tag) { Tag.allocate.instantiate({:guid => "123"}) }
@@ -9,8 +9,8 @@ describe ActiveRemote::RPC do
9
9
 
10
10
  let(:rpc) { ::ActiveRemote::RPCAdapters::ProtobufAdapter.new(::Tag.service_class) }
11
11
 
12
- before { rpc.better_stub(:execute).and_return(response) }
13
- before { ::Tag.better_stub(:rpc).and_return(rpc) }
12
+ before { allow(rpc).to receive(:execute).and_return(response) }
13
+ before { allow(::Tag).to receive(:rpc).and_return(rpc) }
14
14
 
15
15
  it "calls the given RPC method" do
16
16
  expect(Tag.rpc).to receive(:execute).with(:remote_method, args)
@@ -17,7 +17,7 @@ describe ActiveRemote::ScopeKeys do
17
17
  end
18
18
 
19
19
  describe ".scope_keys" do
20
- before { Tag.better_stub(:_scope_keys).and_return(_scope_keys) }
20
+ before { allow(Tag).to receive(:_scope_keys).and_return(_scope_keys) }
21
21
 
22
22
  it "combines primary key with _scope_keys" do
23
23
  expect(Tag.scope_keys).to eq(['guid'] + _scope_keys)
@@ -33,7 +33,7 @@ describe ActiveRemote::ScopeKeys do
33
33
  describe "#scope_key_hash" do
34
34
  let(:scope_key_hash) { { 'guid' => 'TAG-123', 'user_guid' => 'USR-123' } }
35
35
 
36
- before { tag.better_stub(:scope_keys).and_return(scope_keys) }
36
+ before { allow(tag).to receive(:scope_keys).and_return(scope_keys) }
37
37
 
38
38
  it "returns a attribute hash of scope_keys" do
39
39
  expect(tag.scope_key_hash).to eq(scope_key_hash)
@@ -43,8 +43,8 @@ describe ActiveRemote::Search do
43
43
  let(:args) { Hash.new }
44
44
  let(:rpc) { ::ActiveRemote::RPCAdapters::ProtobufAdapter.new(::Tag.service_class) }
45
45
 
46
- before { rpc.better_stub(:execute).and_return(response) }
47
- before { ::Tag.better_stub(:rpc).and_return(rpc) }
46
+ before { allow(rpc).to receive(:execute).and_return(response) }
47
+ before { allow(::Tag).to receive(:rpc).and_return(rpc) }
48
48
 
49
49
  it "searches with the given args" do
50
50
  expect(Tag.rpc).to receive(:execute).with(:search, args)
@@ -60,7 +60,7 @@ describe ActiveRemote::Search do
60
60
  let(:request) { double(:request) }
61
61
 
62
62
  it "raises an exception" do
63
- expect { described_class.search(request) }.to raise_exception
63
+ expect { Tag.search(request) }.to raise_error(::RuntimeError, /Invalid parameter/)
64
64
  end
65
65
  end
66
66
  end
@@ -72,7 +72,7 @@ describe ActiveRemote::Search do
72
72
 
73
73
  before {
74
74
  allow(rpc).to receive(:execute).and_return(response)
75
- Tag.better_stub(:rpc).and_return(rpc)
75
+ allow(Tag).to receive(:rpc).and_return(rpc)
76
76
  }
77
77
 
78
78
  it "runs callbacks" do
@@ -92,10 +92,10 @@ describe ActiveRemote::Search do
92
92
 
93
93
  subject { Tag.new(args) }
94
94
 
95
- before { Tag.better_stub(:find).and_return(attributes) }
95
+ before { allow(Tag).to receive(:find).and_return(Tag.new(attributes)) }
96
96
 
97
97
  it "reloads the record" do
98
- Tag.better_receive(:find).with(subject.scope_key_hash)
98
+ expect(Tag).to receive(:find).with(subject.scope_key_hash)
99
99
  subject.reload
100
100
  end
101
101
 
@@ -39,7 +39,7 @@ describe ActiveRemote::Serialization do
39
39
  let(:response) { Generic::Remote::Tag.new(:errors => [ error ]) }
40
40
 
41
41
  it "adds errors to the active remote object" do
42
- subject.better_receive(:add_errors).with(response.errors)
42
+ expect(subject).to receive(:add_errors).with(response.errors)
43
43
  subject.add_errors_from_response(response)
44
44
  end
45
45
  end
@@ -48,7 +48,7 @@ describe ActiveRemote::Serialization do
48
48
  let(:response_without_errors) { double(:response_without_errors) }
49
49
 
50
50
  it "does not add errors" do
51
- subject.better_not_receive(:add_errors)
51
+ expect(subject).to_not receive(:add_errors)
52
52
  subject.add_errors_from_response(response_without_errors)
53
53
  end
54
54
  end
data/spec/spec_helper.rb CHANGED
@@ -17,4 +17,13 @@ require 'support/models'
17
17
 
18
18
  RSpec.configure do |config|
19
19
  config.include Protobuf::RSpec::Helpers
20
+
21
+ # Turn deprecation warnings into errors with full backtrace.
22
+ config.raise_errors_for_deprecations!
23
+
24
+ # Verifies the existance of any stubbed methods, replaces better_receive and better_stub
25
+ # https://www.relishapp.com/rspec/rspec-mocks/v/3-1/docs/verifying-doubles/partial-doubles
26
+ config.mock_with :rspec do |mocks|
27
+ mocks.verify_partial_doubles = true
28
+ end
20
29
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_remote
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Hutchison
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-14 00:00:00.000000000 Z
11
+ date: 2016-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: active_attr
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.0'
55
- - !ruby/object:Gem::Dependency
56
- name: better_receive
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: rake
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +72,14 @@ dependencies:
86
72
  requirements:
87
73
  - - ">="
88
74
  - !ruby/object:Gem::Version
89
- version: '0'
75
+ version: 3.3.0
90
76
  type: :development
91
77
  prerelease: false
92
78
  version_requirements: !ruby/object:Gem::Requirement
93
79
  requirements:
94
80
  - - ">="
95
81
  - !ruby/object:Gem::Version
96
- version: '0'
82
+ version: 3.3.0
97
83
  - !ruby/object:Gem::Dependency
98
84
  name: rspec-its
99
85
  requirement: !ruby/object:Gem::Requirement
@@ -114,14 +100,14 @@ dependencies:
114
100
  requirements:
115
101
  - - ">="
116
102
  - !ruby/object:Gem::Version
117
- version: '0'
103
+ version: 3.1.0
118
104
  type: :development
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
107
  requirements:
122
108
  - - ">="
123
109
  - !ruby/object:Gem::Version
124
- version: '0'
110
+ version: 3.1.0
125
111
  - !ruby/object:Gem::Dependency
126
112
  name: pry
127
113
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +128,14 @@ dependencies:
142
128
  requirements:
143
129
  - - ">="
144
130
  - !ruby/object:Gem::Version
145
- version: '1.0'
131
+ version: 1.1.2
146
132
  type: :development
147
133
  prerelease: false
148
134
  version_requirements: !ruby/object:Gem::Requirement
149
135
  requirements:
150
136
  - - ">="
151
137
  - !ruby/object:Gem::Version
152
- version: '1.0'
138
+ version: 1.1.2
153
139
  - !ruby/object:Gem::Dependency
154
140
  name: simplecov
155
141
  requirement: !ruby/object:Gem::Requirement
@@ -264,7 +250,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
264
250
  version: '0'
265
251
  requirements: []
266
252
  rubyforge_project:
267
- rubygems_version: 2.4.6
253
+ rubygems_version: 2.5.1
268
254
  signing_key:
269
255
  specification_version: 4
270
256
  summary: Active Record for your platform