api_resource 0.6.17 → 0.6.18

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