api_resource 0.6.16 → 0.6.17

Sign up to get free protection for your applications and to get access to all the features.
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