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 +7 -0
- data/lib/api_resource/finders.rb +116 -93
- data/lib/api_resource/version.rb +1 -1
- data/spec/lib/finders_spec.rb +19 -0
- data/spec/lib/prefixes_spec.rb +1 -1
- metadata +51 -99
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
|
data/lib/api_resource/finders.rb
CHANGED
@@ -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
|
-
|
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 =
|
36
|
+
expiry = @expiry
|
48
37
|
ApiResource.with_ttl(expiry.to_f) do
|
49
|
-
|
50
|
-
|
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
|
-
|
86
|
-
|
87
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
data/lib/api_resource/version.rb
CHANGED
data/spec/lib/finders_spec.rb
CHANGED
@@ -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([])
|
data/spec/lib/prefixes_spec.rb
CHANGED
@@ -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.
|
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-
|
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:
|
467
|
+
rubygems_version: 2.0.3
|
516
468
|
signing_key:
|
517
|
-
specification_version:
|
469
|
+
specification_version: 4
|
518
470
|
summary: ActiveRecord for restful APIs
|
519
471
|
test_files:
|
520
472
|
- spec/lib/api_resource_spec.rb
|