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 +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
|