api_resource 0.6.17 → 0.6.18

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