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