api_resource 0.6.16 → 0.6.17

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.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- api_resource (0.6.16)
4
+ api_resource (0.6.17)
5
5
  colorize
6
6
  differ
7
7
  json
@@ -12,7 +12,11 @@ module ApiResource
12
12
  @internal_object = self.klass.connection.get(self.build_load_path)
13
13
  return [] if @internal_object.blank?
14
14
 
15
- @internal_object = self.klass.instantiate_collection(@internal_object)
15
+ if @internal_object.is_a?(Array)
16
+ @internal_object = self.klass.instantiate_collection(@internal_object)
17
+ else
18
+ @internal_object = [self.klass.instantiate_record(@internal_object)]
19
+ end
16
20
 
17
21
  id_hash = self.condition.included_objects.inject({}) do |accum, assoc|
18
22
  accum[assoc] = @internal_object.collect do |obj|
@@ -26,6 +30,12 @@ module ApiResource
26
30
 
27
31
  self.apply_includes(@internal_object, included_objects)
28
32
 
33
+ # looks hacky, but we want to return only a single
34
+ # object in case of a find call.
35
+ if @internal_object.count == 1 && self.build_load_path =~ /find/
36
+ @internal_object = @internal_object.first
37
+ end
38
+
29
39
  return @internal_object
30
40
  rescue ApiResource::ResourceNotFound
31
41
  nil
@@ -1,46 +1,50 @@
1
1
  module ApiResource
2
2
 
3
- module Finders
3
+ module Finders
4
4
 
5
- class SingleFinder < AbstractFinder
5
+ class SingleFinder < AbstractFinder
6
6
 
7
- def load
8
- data = self.klass.connection.get(self.build_load_path)
7
+ def load
8
+ data = self.klass.connection.get(self.build_load_path)
9
9
 
10
- @loaded = true
11
- return nil if data.blank?
12
- @internal_object = self.klass.instantiate_record(data)
13
- # now that the object is loaded, resolve the includes
14
- id_hash = self.condition.included_objects.inject({}) do |accum, assoc|
15
- accum[assoc] = Array.wrap(
16
- @internal_object.send(
17
- @internal_object.class.association_foreign_key_field(assoc)
18
- )
19
- )
20
- accum
21
- end
10
+ @loaded = true
11
+ return nil if data.blank?
22
12
 
23
- included_objects = self.load_includes(id_hash)
13
+ @internal_object = self.klass.instantiate_record(data)
14
+ # now that the object is loaded, resolve the includes
15
+ id_hash = self.condition.included_objects.inject({}) do |accum, assoc|
16
+ accum[assoc] = Array.wrap(
17
+ @internal_object.send(
18
+ @internal_object.class.association_foreign_key_field(assoc)
19
+ )
20
+ )
21
+ accum
22
+ end
24
23
 
25
- self.apply_includes(@internal_object, included_objects)
24
+ included_objects = self.load_includes(id_hash)
26
25
 
27
- return @internal_object
28
- end
26
+ self.apply_includes(@internal_object, included_objects)
29
27
 
30
- protected
28
+ return @internal_object
29
+ end
31
30
 
32
- def build_load_path
33
- if self.condition.to_hash["id"].nil?
34
- raise "Invalid evaluation of a SingleFinder without an ID"
35
- end
36
- args = self.condition.to_hash
37
- id = args.delete("id")
38
- prefix_opts, query_opts = self.klass.split_options(args)
39
- self.klass.element_path(id, prefix_opts, query_opts)
40
- end
31
+ protected
41
32
 
42
- end
33
+ def build_load_path
34
+ if self.condition.to_hash["id"].nil?
35
+ raise "Invalid evaluation of a SingleFinder without an ID"
36
+ end
43
37
 
44
- end
38
+ args = self.condition.to_hash
39
+ id = args.delete("id")
40
+
41
+ prefix_opts, query_opts = self.klass.split_options(args)
42
+ self.klass.element_path(id, prefix_opts, query_opts)
43
+
44
+ end
45
+
46
+ end
47
+
48
+ end
45
49
 
46
50
  end
@@ -29,43 +29,114 @@ module ApiResource
29
29
  # make sure we have class data before loading
30
30
  self.load_resource_definition
31
31
 
32
- scope = arguments.slice!(0)
33
- options = arguments.slice!(0) || {}
34
- cond = arguments.slice!(0)
32
+ # Conditions sometimes call find, passing themselves as the last arg.
33
+ if arguments.last.is_a?(ApiResource::Conditions::AbstractCondition)
34
+ cond = arguments.slice!(arguments.length - 1)
35
+ else
36
+ cond = nil
37
+ end
38
+
39
+ # Support options being passed in as a hash.
40
+ options = arguments.extract_options! || {}
41
+
42
+ # Remaining arguments are the scope.
43
+ scope = arguments
35
44
 
36
45
  # TODO: Make this into a class attribute properly (if it isn't already)
37
46
  # this is a little bit of a hack because options can sometimes be a Condition
38
47
  expiry = (options.is_a?(Hash) ? options.delete(:expires_in) : nil) || ApiResource::Base.ttl || 0
39
48
  ApiResource.with_ttl(expiry.to_f) do
40
- case scope
41
- when :all, :first, :last
42
- final_cond = ApiResource::Conditions::ScopeCondition.new({}, self)
43
- # we need new conditions here to take into account options, which could
44
- # either be a Condition object or a hash
49
+
50
+ # If we have a condition or options to process...
51
+ if cond || options.present?
52
+
53
+ # Convert options hash to scope condition.
45
54
  if options.is_a?(Hash)
46
55
  opts = options.with_indifferent_access.delete(:params) || options || {}
47
- final_cond = ApiResource::Conditions::ScopeCondition.new(opts, self)
48
- # cond may be nil
49
- unless cond == nil # THIS MUST BE == NOT nil?
50
- final_cond = cond.merge!(final_cond)
56
+ options = ApiResource::Conditions::ScopeCondition.new(opts, self)
57
+ end
58
+
59
+ # Combine all combinations of conditions and options
60
+ if cond
61
+ if options
62
+ final_cond = cond.merge!(options)
63
+ else
64
+ final_cond = cond
51
65
  end
52
- elsif options.is_a?(ApiResource::Conditions::AbstractCondition)
66
+ elsif options
53
67
  final_cond = options
54
68
  end
55
- # now final cond contains all the conditions we should need to pass to the finder
56
- fnd = ApiResource::Finders::ResourceFinder.new(self, final_cond)
57
- fnd.send(scope)
69
+
70
+ # If we have one argument, it's either a word argument
71
+ # like first, last, or all, or its a number.
72
+ if Array.wrap(scope).size == 1
73
+ scope = scope.first if scope.is_a?(Array)
74
+
75
+ # Create the finder with the conditions, then call the scope.
76
+ # e.g. Class.scope(1).first
77
+ if [:all, :first, :last].include?(scope)
78
+ fnd = ApiResource::Finders::ResourceFinder.new(self, final_cond)
79
+ fnd.send(scope)
80
+
81
+ # If we have no conditions or they are only prefixes or
82
+ # includes,and only one argument (not a word) then we
83
+ # only have a single item to find.
84
+ # e.g. Class.includes.find(1)
85
+ elsif final_cond.blank_conditions? || final_cond.conditions.include?(:foreign_key_id)
86
+ scope = scope.first if scope.is_a?(Array)
87
+ final_cond = final_cond.merge!(ApiResource::Conditions::ScopeCondition.new({:id => scope}, self))
88
+
89
+ ApiResource::Finders::SingleFinder.new(self, final_cond).load
90
+ else
91
+
92
+ # Otherwise we are chaining a find onto
93
+ # the end of a set of conditions.
94
+ # e.g. Class.scope(1).find(1)
95
+ fnd = final_cond.merge!(ApiResource::Conditions::ScopeCondition.new({:find => {:ids => scope}}, self))
96
+ fnd.send(:all)
97
+ end
98
+
99
+ else
100
+
101
+ # We are searching for multiple ids.
102
+ # e.g. Class.scope(1).find(1,2)
103
+ fnd = final_cond.merge!(ApiResource::Conditions::ScopeCondition.new({:find => {:ids => scope}}, self))
104
+ fnd.send(:all)
105
+ end
106
+
58
107
  else
59
- # in this case scope is the id we want to find, and options should be a condition object or nil
60
- final_cond = ApiResource::Conditions::ScopeCondition.new({:id => scope}, self)
61
- if options.is_a?(ApiResource::Conditions::AbstractCondition)
62
- final_cond = options.merge!(final_cond)
63
- elsif options.is_a?(Hash)
64
- opts = options.with_indifferent_access.delete(:params) || options || {}
65
- final_cond = ApiResource::Conditions::ScopeCondition.new(opts, self).merge!(final_cond)
108
+
109
+ # No conditions
110
+ if Array.wrap(scope).size == 1
111
+ scope = scope.first if scope.is_a?(Array)
112
+
113
+ # We are calling first, last, or all on the class itself.
114
+ # e.g. Class.first
115
+ if [:all, :first, :last].include?(scope)
116
+ final_cond = ApiResource::Conditions::ScopeCondition.new({scope => true}, self)
117
+
118
+ fnd = ApiResource::Finders::ResourceFinder.new(self, final_cond)
119
+ fnd.send(scope)
120
+ else
121
+
122
+ # We are performing a simple find of a single object
123
+ # e.g. Class.find(1)
124
+ scope = scope.first if scope.is_a?(Array)
125
+ final_cond = ApiResource::Conditions::ScopeCondition.new({:id => scope}, self)
126
+
127
+ ApiResource::Finders::SingleFinder.new(self, final_cond).load
128
+ end
129
+
130
+ else
131
+ # We are performing a find on multiple objects
132
+ # e.g. Class.find(1,2)
133
+ ApiResource::Conditions::ScopeCondition.new({:find => {:ids => scope}}, self)
134
+ fnd.send(:all)
135
+
66
136
  end
67
- ApiResource::Finders::SingleFinder.new(self, final_cond).load
137
+
68
138
  end
139
+
69
140
  end
70
141
  end
71
142
 
@@ -1,3 +1,3 @@
1
1
  module ApiResource
2
- VERSION = "0.6.16"
2
+ VERSION = "0.6.17"
3
3
  end
@@ -28,6 +28,31 @@ describe ApiResource::Finders do
28
28
  TestResource.active.all(:passive => true)
29
29
  end
30
30
 
31
+ it "should be able to find a single object after a scope" do
32
+ TestResource.connection.expects(:get)
33
+ .with("/test_resources.json?birthday%5Bdate%5D=5&find%5Bids%5D=1").returns([{"id" => 10}])
34
+
35
+ val = TestResource.birthday(5).find(1)
36
+ val.should be_a(TestResource)
37
+ end
38
+
39
+ it "should be able to find multiple objects after a scope" do
40
+ TestResource.connection.expects(:get)
41
+ .with("/test_resources.json?birthday%5Bdate%5D=5&find%5Bids%5D=1").returns([{"id" => 10}, {"id" => 8}])
42
+
43
+ val = TestResource.birthday(5).find(1)
44
+ val.should be_a(Array)
45
+ val.first.should be_a(TestResource)
46
+ end
47
+
48
+ it "should be able to find the first/last object" do
49
+ TestResource.connection.expects(:get)
50
+ .with("/test_resources.json?first=true").returns([{"id" => 10}])
51
+
52
+ val = TestResource.first
53
+ val.should be_a(TestResource)
54
+ end
55
+
31
56
  it "should be able to chain find on top of an includes call" do
32
57
  TestResource.connection.expects(:get).with("/test_resources/1.json").returns({"id" => 1, "has_many_object_ids" => [1,2]})
33
58
  HasManyObject.connection.expects(:get).with("/has_many_objects.json?ids%5B%5D=1&ids%5B%5D=2").returns([])
@@ -59,7 +59,7 @@ describe "With Prefixes" do
59
59
  it "should not use the prefix to find records when not given as a param to avoid automatic failure" do
60
60
  prefix_model.send(:connection).expects(:get)
61
61
  .with(
62
- "/prefix_models.json"
62
+ "/prefix_models.json?first=true"
63
63
  )
64
64
  .returns([])
65
65
  PrefixModel.first
@@ -11,6 +11,9 @@ Mocks.define do
11
11
  post(HashDealer.roll(:test_resource).merge(:id => 1), :params => {:test_resource => HashDealer.roll(:test_resource_with_roles).matcher})
12
12
  get((0..4).to_a.collect{HashDealer.roll(:test_resource)})
13
13
  get((0..4).to_a.collect{HashDealer.roll(:test_resource)}, :params => {:active => true})
14
+ get((0..4).to_a.collect{HashDealer.roll(:test_resource)}, :params => {:all => true})
15
+ get((0..4).to_a.collect{HashDealer.roll(:test_resource)}, :params => {:first => true})
16
+ get((0..4).to_a.collect{HashDealer.roll(:test_resource)}, :params => {:last => true})
14
17
  end
15
18
 
16
19
  endpoint("/test_resources/:id") do
metadata CHANGED
@@ -1,7 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api_resource
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.16
4
+ version: 0.6.17
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Ethan Langevin
@@ -15,6 +16,7 @@ dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: rake
17
18
  requirement: !ruby/object:Gem::Requirement
19
+ none: false
18
20
  requirements:
19
21
  - - ! '>='
20
22
  - !ruby/object:Gem::Version
@@ -22,6 +24,7 @@ dependencies:
22
24
  type: :development
23
25
  prerelease: false
24
26
  version_requirements: !ruby/object:Gem::Requirement
27
+ none: false
25
28
  requirements:
26
29
  - - ! '>='
27
30
  - !ruby/object:Gem::Version
@@ -29,6 +32,7 @@ dependencies:
29
32
  - !ruby/object:Gem::Dependency
30
33
  name: rspec
31
34
  requirement: !ruby/object:Gem::Requirement
35
+ none: false
32
36
  requirements:
33
37
  - - ! '>='
34
38
  - !ruby/object:Gem::Version
@@ -36,6 +40,7 @@ dependencies:
36
40
  type: :development
37
41
  prerelease: false
38
42
  version_requirements: !ruby/object:Gem::Requirement
43
+ none: false
39
44
  requirements:
40
45
  - - ! '>='
41
46
  - !ruby/object:Gem::Version
@@ -43,6 +48,7 @@ dependencies:
43
48
  - !ruby/object:Gem::Dependency
44
49
  name: spork
45
50
  requirement: !ruby/object:Gem::Requirement
51
+ none: false
46
52
  requirements:
47
53
  - - ! '>='
48
54
  - !ruby/object:Gem::Version
@@ -50,6 +56,7 @@ dependencies:
50
56
  type: :development
51
57
  prerelease: false
52
58
  version_requirements: !ruby/object:Gem::Requirement
59
+ none: false
53
60
  requirements:
54
61
  - - ! '>='
55
62
  - !ruby/object:Gem::Version
@@ -57,6 +64,7 @@ dependencies:
57
64
  - !ruby/object:Gem::Dependency
58
65
  name: yarjuf
59
66
  requirement: !ruby/object:Gem::Requirement
67
+ none: false
60
68
  requirements:
61
69
  - - ! '>='
62
70
  - !ruby/object:Gem::Version
@@ -64,6 +72,7 @@ dependencies:
64
72
  type: :development
65
73
  prerelease: false
66
74
  version_requirements: !ruby/object:Gem::Requirement
75
+ none: false
67
76
  requirements:
68
77
  - - ! '>='
69
78
  - !ruby/object:Gem::Version
@@ -71,6 +80,7 @@ dependencies:
71
80
  - !ruby/object:Gem::Dependency
72
81
  name: mocha
73
82
  requirement: !ruby/object:Gem::Requirement
83
+ none: false
74
84
  requirements:
75
85
  - - '='
76
86
  - !ruby/object:Gem::Version
@@ -78,6 +88,7 @@ dependencies:
78
88
  type: :development
79
89
  prerelease: false
80
90
  version_requirements: !ruby/object:Gem::Requirement
91
+ none: false
81
92
  requirements:
82
93
  - - '='
83
94
  - !ruby/object:Gem::Version
@@ -85,6 +96,7 @@ dependencies:
85
96
  - !ruby/object:Gem::Dependency
86
97
  name: faker
87
98
  requirement: !ruby/object:Gem::Requirement
99
+ none: false
88
100
  requirements:
89
101
  - - ! '>='
90
102
  - !ruby/object:Gem::Version
@@ -92,6 +104,7 @@ dependencies:
92
104
  type: :development
93
105
  prerelease: false
94
106
  version_requirements: !ruby/object:Gem::Requirement
107
+ none: false
95
108
  requirements:
96
109
  - - ! '>='
97
110
  - !ruby/object:Gem::Version
@@ -99,6 +112,7 @@ dependencies:
99
112
  - !ruby/object:Gem::Dependency
100
113
  name: guard-bundler
101
114
  requirement: !ruby/object:Gem::Requirement
115
+ none: false
102
116
  requirements:
103
117
  - - ! '>='
104
118
  - !ruby/object:Gem::Version
@@ -106,6 +120,7 @@ dependencies:
106
120
  type: :development
107
121
  prerelease: false
108
122
  version_requirements: !ruby/object:Gem::Requirement
123
+ none: false
109
124
  requirements:
110
125
  - - ! '>='
111
126
  - !ruby/object:Gem::Version
@@ -113,6 +128,7 @@ dependencies:
113
128
  - !ruby/object:Gem::Dependency
114
129
  name: guard-rspec
115
130
  requirement: !ruby/object:Gem::Requirement
131
+ none: false
116
132
  requirements:
117
133
  - - ! '>='
118
134
  - !ruby/object:Gem::Version
@@ -120,6 +136,7 @@ dependencies:
120
136
  type: :development
121
137
  prerelease: false
122
138
  version_requirements: !ruby/object:Gem::Requirement
139
+ none: false
123
140
  requirements:
124
141
  - - ! '>='
125
142
  - !ruby/object:Gem::Version
@@ -127,6 +144,7 @@ dependencies:
127
144
  - !ruby/object:Gem::Dependency
128
145
  name: guard-spork
129
146
  requirement: !ruby/object:Gem::Requirement
147
+ none: false
130
148
  requirements:
131
149
  - - ! '>='
132
150
  - !ruby/object:Gem::Version
@@ -134,6 +152,7 @@ dependencies:
134
152
  type: :development
135
153
  prerelease: false
136
154
  version_requirements: !ruby/object:Gem::Requirement
155
+ none: false
137
156
  requirements:
138
157
  - - ! '>='
139
158
  - !ruby/object:Gem::Version
@@ -141,6 +160,7 @@ dependencies:
141
160
  - !ruby/object:Gem::Dependency
142
161
  name: growl
143
162
  requirement: !ruby/object:Gem::Requirement
163
+ none: false
144
164
  requirements:
145
165
  - - ! '>='
146
166
  - !ruby/object:Gem::Version
@@ -148,6 +168,7 @@ dependencies:
148
168
  type: :development
149
169
  prerelease: false
150
170
  version_requirements: !ruby/object:Gem::Requirement
171
+ none: false
151
172
  requirements:
152
173
  - - ! '>='
153
174
  - !ruby/object:Gem::Version
@@ -155,6 +176,7 @@ dependencies:
155
176
  - !ruby/object:Gem::Dependency
156
177
  name: flay
157
178
  requirement: !ruby/object:Gem::Requirement
179
+ none: false
158
180
  requirements:
159
181
  - - ! '>='
160
182
  - !ruby/object:Gem::Version
@@ -162,6 +184,7 @@ dependencies:
162
184
  type: :development
163
185
  prerelease: false
164
186
  version_requirements: !ruby/object:Gem::Requirement
187
+ none: false
165
188
  requirements:
166
189
  - - ! '>='
167
190
  - !ruby/object:Gem::Version
@@ -169,6 +192,7 @@ dependencies:
169
192
  - !ruby/object:Gem::Dependency
170
193
  name: flog
171
194
  requirement: !ruby/object:Gem::Requirement
195
+ none: false
172
196
  requirements:
173
197
  - - ! '>='
174
198
  - !ruby/object:Gem::Version
@@ -176,6 +200,7 @@ dependencies:
176
200
  type: :development
177
201
  prerelease: false
178
202
  version_requirements: !ruby/object:Gem::Requirement
203
+ none: false
179
204
  requirements:
180
205
  - - ! '>='
181
206
  - !ruby/object:Gem::Version
@@ -183,6 +208,7 @@ dependencies:
183
208
  - !ruby/object:Gem::Dependency
184
209
  name: hash_dealer
185
210
  requirement: !ruby/object:Gem::Requirement
211
+ none: false
186
212
  requirements:
187
213
  - - ! '>='
188
214
  - !ruby/object:Gem::Version
@@ -190,6 +216,7 @@ dependencies:
190
216
  type: :development
191
217
  prerelease: false
192
218
  version_requirements: !ruby/object:Gem::Requirement
219
+ none: false
193
220
  requirements:
194
221
  - - ! '>='
195
222
  - !ruby/object:Gem::Version
@@ -197,6 +224,7 @@ dependencies:
197
224
  - !ruby/object:Gem::Dependency
198
225
  name: rb-fsevent
199
226
  requirement: !ruby/object:Gem::Requirement
227
+ none: false
200
228
  requirements:
201
229
  - - ! '>='
202
230
  - !ruby/object:Gem::Version
@@ -204,6 +232,7 @@ dependencies:
204
232
  type: :development
205
233
  prerelease: false
206
234
  version_requirements: !ruby/object:Gem::Requirement
235
+ none: false
207
236
  requirements:
208
237
  - - ! '>='
209
238
  - !ruby/object:Gem::Version
@@ -211,6 +240,7 @@ dependencies:
211
240
  - !ruby/object:Gem::Dependency
212
241
  name: byebug
213
242
  requirement: !ruby/object:Gem::Requirement
243
+ none: false
214
244
  requirements:
215
245
  - - ! '>='
216
246
  - !ruby/object:Gem::Version
@@ -218,6 +248,7 @@ dependencies:
218
248
  type: :development
219
249
  prerelease: false
220
250
  version_requirements: !ruby/object:Gem::Requirement
251
+ none: false
221
252
  requirements:
222
253
  - - ! '>='
223
254
  - !ruby/object:Gem::Version
@@ -225,6 +256,7 @@ dependencies:
225
256
  - !ruby/object:Gem::Dependency
226
257
  name: simplecov
227
258
  requirement: !ruby/object:Gem::Requirement
259
+ none: false
228
260
  requirements:
229
261
  - - ! '>='
230
262
  - !ruby/object:Gem::Version
@@ -232,6 +264,7 @@ dependencies:
232
264
  type: :development
233
265
  prerelease: false
234
266
  version_requirements: !ruby/object:Gem::Requirement
267
+ none: false
235
268
  requirements:
236
269
  - - ! '>='
237
270
  - !ruby/object:Gem::Version
@@ -239,6 +272,7 @@ dependencies:
239
272
  - !ruby/object:Gem::Dependency
240
273
  name: sqlite3
241
274
  requirement: !ruby/object:Gem::Requirement
275
+ none: false
242
276
  requirements:
243
277
  - - ! '>='
244
278
  - !ruby/object:Gem::Version
@@ -246,6 +280,7 @@ dependencies:
246
280
  type: :development
247
281
  prerelease: false
248
282
  version_requirements: !ruby/object:Gem::Requirement
283
+ none: false
249
284
  requirements:
250
285
  - - ! '>='
251
286
  - !ruby/object:Gem::Version
@@ -253,6 +288,7 @@ dependencies:
253
288
  - !ruby/object:Gem::Dependency
254
289
  name: rails
255
290
  requirement: !ruby/object:Gem::Requirement
291
+ none: false
256
292
  requirements:
257
293
  - - ! '>='
258
294
  - !ruby/object:Gem::Version
@@ -260,6 +296,7 @@ dependencies:
260
296
  type: :runtime
261
297
  prerelease: false
262
298
  version_requirements: !ruby/object:Gem::Requirement
299
+ none: false
263
300
  requirements:
264
301
  - - ! '>='
265
302
  - !ruby/object:Gem::Version
@@ -267,6 +304,7 @@ dependencies:
267
304
  - !ruby/object:Gem::Dependency
268
305
  name: json
269
306
  requirement: !ruby/object:Gem::Requirement
307
+ none: false
270
308
  requirements:
271
309
  - - ! '>='
272
310
  - !ruby/object:Gem::Version
@@ -274,6 +312,7 @@ dependencies:
274
312
  type: :runtime
275
313
  prerelease: false
276
314
  version_requirements: !ruby/object:Gem::Requirement
315
+ none: false
277
316
  requirements:
278
317
  - - ! '>='
279
318
  - !ruby/object:Gem::Version
@@ -281,6 +320,7 @@ dependencies:
281
320
  - !ruby/object:Gem::Dependency
282
321
  name: rest-client
283
322
  requirement: !ruby/object:Gem::Requirement
323
+ none: false
284
324
  requirements:
285
325
  - - ! '>='
286
326
  - !ruby/object:Gem::Version
@@ -288,6 +328,7 @@ dependencies:
288
328
  type: :runtime
289
329
  prerelease: false
290
330
  version_requirements: !ruby/object:Gem::Requirement
331
+ none: false
291
332
  requirements:
292
333
  - - ! '>='
293
334
  - !ruby/object:Gem::Version
@@ -295,6 +336,7 @@ dependencies:
295
336
  - !ruby/object:Gem::Dependency
296
337
  name: log4r
297
338
  requirement: !ruby/object:Gem::Requirement
339
+ none: false
298
340
  requirements:
299
341
  - - ! '>='
300
342
  - !ruby/object:Gem::Version
@@ -302,6 +344,7 @@ dependencies:
302
344
  type: :runtime
303
345
  prerelease: false
304
346
  version_requirements: !ruby/object:Gem::Requirement
347
+ none: false
305
348
  requirements:
306
349
  - - ! '>='
307
350
  - !ruby/object:Gem::Version
@@ -309,6 +352,7 @@ dependencies:
309
352
  - !ruby/object:Gem::Dependency
310
353
  name: differ
311
354
  requirement: !ruby/object:Gem::Requirement
355
+ none: false
312
356
  requirements:
313
357
  - - ! '>='
314
358
  - !ruby/object:Gem::Version
@@ -316,6 +360,7 @@ dependencies:
316
360
  type: :runtime
317
361
  prerelease: false
318
362
  version_requirements: !ruby/object:Gem::Requirement
363
+ none: false
319
364
  requirements:
320
365
  - - ! '>='
321
366
  - !ruby/object:Gem::Version
@@ -323,6 +368,7 @@ dependencies:
323
368
  - !ruby/object:Gem::Dependency
324
369
  name: colorize
325
370
  requirement: !ruby/object:Gem::Requirement
371
+ none: false
326
372
  requirements:
327
373
  - - ! '>='
328
374
  - !ruby/object:Gem::Version
@@ -330,6 +376,7 @@ dependencies:
330
376
  type: :runtime
331
377
  prerelease: false
332
378
  version_requirements: !ruby/object:Gem::Requirement
379
+ none: false
333
380
  requirements:
334
381
  - - ! '>='
335
382
  - !ruby/object:Gem::Version
@@ -447,26 +494,27 @@ files:
447
494
  - spec/tmp/DIR
448
495
  homepage: ''
449
496
  licenses: []
450
- metadata: {}
451
497
  post_install_message:
452
498
  rdoc_options: []
453
499
  require_paths:
454
500
  - lib
455
501
  required_ruby_version: !ruby/object:Gem::Requirement
502
+ none: false
456
503
  requirements:
457
504
  - - ! '>='
458
505
  - !ruby/object:Gem::Version
459
506
  version: '0'
460
507
  required_rubygems_version: !ruby/object:Gem::Requirement
508
+ none: false
461
509
  requirements:
462
510
  - - ! '>='
463
511
  - !ruby/object:Gem::Version
464
512
  version: '0'
465
513
  requirements: []
466
514
  rubyforge_project:
467
- rubygems_version: 2.1.9
515
+ rubygems_version: 1.8.25
468
516
  signing_key:
469
- specification_version: 4
517
+ specification_version: 3
470
518
  summary: ActiveRecord for restful APIs
471
519
  test_files:
472
520
  - spec/lib/api_resource_spec.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: 632f38e5c69b7fc0366a47658f215dd0677d9e0e
4
- data.tar.gz: 8864d81591dda597971e65b930c5fee42f4c3ac3
5
- SHA512:
6
- metadata.gz: dc9dc2ddf48d9a06edbdde988c61412aa628b1dea6f0199050c91798542accc81cf26f0af4d956ae70f59fd73e719ff129063260cfcaafec14380d4743270eb2
7
- data.tar.gz: 2b9937b5a8f541e6033cbb6fb011fb4954c542fd680317e8e81b5a9f1e45786204f5c5bda2eb828e6333fe729c3757e01107452592df0c085b90f0e2a07fa25d