lazy_resource 0.4.0 → 0.5.0
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 +15 -0
- data/.rspec +0 -1
- data/.rvmrc +1 -1
- data/.travis.yml +6 -0
- data/Gemfile +1 -1
- data/NOTES.md +36 -0
- data/README.md +115 -60
- data/examples/github.rb +8 -0
- data/lazy_resource.gemspec +3 -3
- data/lib/lazy_resource.rb +17 -0
- data/lib/lazy_resource/attributes.rb +24 -15
- data/lib/lazy_resource/ext/typhoeus.rb +43 -10
- data/lib/lazy_resource/log_subscriber.rb +17 -0
- data/lib/lazy_resource/mapping.rb +1 -1
- data/lib/lazy_resource/relation.rb +11 -1
- data/lib/lazy_resource/request.rb +36 -16
- data/lib/lazy_resource/resource.rb +6 -5
- data/lib/lazy_resource/resource_queue.rb +33 -7
- data/lib/lazy_resource/url_generation.rb +6 -4
- data/lib/lazy_resource/version.rb +1 -1
- data/spec/lazy_resource/attributes_spec.rb +44 -23
- data/spec/lazy_resource/ext/typhoeus_spec.rb +44 -13
- data/spec/lazy_resource/lazy_resource_spec.rb +26 -1
- data/spec/lazy_resource/log_subscriber_spec.rb +46 -0
- data/spec/lazy_resource/relation_spec.rb +25 -0
- data/spec/lazy_resource/request_spec.rb +11 -4
- data/spec/lazy_resource/resource_queue_spec.rb +47 -0
- data/spec/lazy_resource/resource_spec.rb +20 -6
- data/spec/lazy_resource/url_generation_spec.rb +10 -4
- data/spec/spec_helper.rb +1 -1
- metadata +20 -31
@@ -6,35 +6,66 @@ class SimpleLogger
|
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
|
-
describe Typhoeus
|
9
|
+
describe "Logging added to Typhoeus" do
|
10
|
+
before :each do
|
11
|
+
LazyResource.debug = true
|
12
|
+
LazyResource.logger = SimpleLogger.new
|
13
|
+
@hydra = Thread.current[:request_queue] = Typhoeus::Hydra.new(:max_concurrency => LazyResource.max_concurrency)
|
14
|
+
|
15
|
+
LazyResource::HttpMock.respond_to do |responder|
|
16
|
+
responder.get('http://example.com', '')
|
17
|
+
responder.get('http://example.com/users/1', { :name => 'Andrew' }.to_json)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
10
21
|
describe '#run_with_logging' do
|
11
22
|
before :each do
|
12
|
-
LazyResource.debug = true
|
13
|
-
LazyResource.logger = SimpleLogger.new
|
14
|
-
@hydra = Typhoeus::Hydra.new
|
15
23
|
@hydra.stub!(:run_without_logging)
|
16
24
|
@multi = @hydra.send(:instance_variable_get, :"@multi")
|
17
25
|
end
|
18
26
|
|
19
27
|
it 'logs if logging is enabled, there are items to process, and the queue has not yet started processing' do
|
20
|
-
@multi.stub
|
21
|
-
@multi.stub
|
22
|
-
|
28
|
+
@multi.stub(:easy_handles).and_return([1,2,3])
|
29
|
+
@multi.stub(:running_count).and_return(0)
|
30
|
+
ActiveSupport::Notifications.should_receive(:instrument).twice
|
23
31
|
@hydra.run_with_logging
|
24
32
|
end
|
25
33
|
|
26
34
|
it 'does not log if there are no items to process' do
|
27
|
-
@multi.stub
|
28
|
-
@multi.stub
|
29
|
-
|
35
|
+
@multi.stub(:easy_handles).and_return([])
|
36
|
+
@multi.stub(:running_count).and_return(0)
|
37
|
+
ActiveSupport::Notifications.should_not_receive(:instrument)
|
30
38
|
@hydra.run_with_logging
|
31
39
|
end
|
32
40
|
|
33
41
|
it 'does not log if the queue is already being processed' do
|
34
|
-
@multi.stub
|
35
|
-
@multi.stub
|
36
|
-
|
42
|
+
@multi.stub(:easy_handles).and_return([1,2,3])
|
43
|
+
@multi.stub(:running_count).and_return(3)
|
44
|
+
ActiveSupport::Notifications.should_not_receive(:instrument)
|
37
45
|
@hydra.run_with_logging
|
38
46
|
end
|
39
47
|
end
|
48
|
+
|
49
|
+
describe '#items_queued?' do
|
50
|
+
it 'returns true if there are items queued' do
|
51
|
+
3.times { User.find(1) }
|
52
|
+
@hydra.items_queued?.should == true
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe 'logging' do
|
57
|
+
it 'logs if logging is enabled, there are items to process, and the queue has not yet started processing' do
|
58
|
+
users = []
|
59
|
+
3.times { users << User.find(1) }
|
60
|
+
# twice for the start/end, and once each for every user (3)
|
61
|
+
ActiveSupport::Notifications.should_receive(:instrument).exactly(5).times
|
62
|
+
users.each { |u| u.name }
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'does not log if there are no items to process' do
|
66
|
+
users = User.find(1)
|
67
|
+
users.name
|
68
|
+
ActiveSupport::Notifications.should_not_receive(:instrument)
|
69
|
+
end
|
70
|
+
end
|
40
71
|
end
|
@@ -22,10 +22,35 @@ describe LazyResource do
|
|
22
22
|
|
23
23
|
describe '#debug' do
|
24
24
|
it 'logs when a request completes' do
|
25
|
-
|
25
|
+
ActiveSupport::Notifications.should_receive(:instrument).with('request.lazy_resource', kind_of(Hash))
|
26
26
|
request = LazyResource::Request.new('http://example.com', User.new)
|
27
27
|
request.response = Typhoeus::Response.new
|
28
28
|
request.execute_callbacks
|
29
29
|
end
|
30
30
|
end
|
31
|
+
|
32
|
+
describe '#deprecate' do
|
33
|
+
it 'logs a message about a deprecation' do
|
34
|
+
LazyResource.logger.should_receive(:info).with("a deprecation from file.rb#123")
|
35
|
+
LazyResource.deprecate('a deprecation', 'file.rb', 123)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe '#max_concurrency=' do
|
40
|
+
it 'sets the max_concurrency' do
|
41
|
+
LazyResource.max_concurrency = 100
|
42
|
+
LazyResource.max_concurrency.should == 100
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
describe '#max_concurrency' do
|
47
|
+
before :each do
|
48
|
+
Thread.current[:request_queue] = nil
|
49
|
+
end
|
50
|
+
|
51
|
+
it 'determines the amount of maximum concurrent requests Hydra will make' do
|
52
|
+
LazyResource.max_concurrency = 100
|
53
|
+
User.request_queue.max_concurrency.should == 100
|
54
|
+
end
|
55
|
+
end
|
31
56
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe LazyResource::LogSubscriber do
|
4
|
+
let(:event) do
|
5
|
+
OpenStruct.new({
|
6
|
+
payload: {
|
7
|
+
code: 200,
|
8
|
+
time: 5,
|
9
|
+
url: "http://google.com"
|
10
|
+
}
|
11
|
+
})
|
12
|
+
end
|
13
|
+
|
14
|
+
describe '#request' do
|
15
|
+
subject { LazyResource::LogSubscriber.new }
|
16
|
+
|
17
|
+
before do
|
18
|
+
LazyResource::LogSubscriber.attach_to(:lazy_resource)
|
19
|
+
|
20
|
+
subject.stub(:info) do |message|
|
21
|
+
message
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'logs the request using the info level' do
|
26
|
+
subject.should_receive(:info).with(any_args)
|
27
|
+
subject.request(event)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'includes the response code' do
|
31
|
+
subject.request(event).should =~ /200/
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'includes the response time' do
|
35
|
+
subject.request(event).should =~ /5000ms/
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'includes the request url' do
|
39
|
+
subject.request(event).should =~ /http:\/\/google\.com/
|
40
|
+
end
|
41
|
+
|
42
|
+
after do
|
43
|
+
ActiveSupport::LogSubscriber.log_subscribers.clear
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -173,5 +173,30 @@ describe LazyResource::Relation do
|
|
173
173
|
relation = LazyResource::Relation.new(User)
|
174
174
|
lambda { relation.foo }.should raise_error(NoMethodError)
|
175
175
|
end
|
176
|
+
|
177
|
+
it 'raises an error if request_error is set' do
|
178
|
+
relation = LazyResource::Relation.new(User, fetched: true)
|
179
|
+
relation.request_error = StandardError.new
|
180
|
+
lambda { relation.to_a }.should raise_error(StandardError)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
describe '#method' do
|
185
|
+
it 'returns the provided method as a symbol' do
|
186
|
+
relation = LazyResource::Relation.new(User)
|
187
|
+
relation.method = 'post'
|
188
|
+
relation.method.should == :post
|
189
|
+
end
|
190
|
+
|
191
|
+
it 'downcases the returned method' do
|
192
|
+
relation = LazyResource::Relation.new(User)
|
193
|
+
relation.method = 'POST'
|
194
|
+
relation.method.should == :post
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'returns nil when no method has been provided' do
|
198
|
+
relation = LazyResource::Relation.new(User)
|
199
|
+
relation.method.should be_nil
|
200
|
+
end
|
176
201
|
end
|
177
202
|
end
|
@@ -18,6 +18,7 @@ describe LazyResource::Request do
|
|
18
18
|
|
19
19
|
after :each do
|
20
20
|
Thread.current[:default_headers] = nil
|
21
|
+
Thread.current[:default_params] = nil
|
21
22
|
end
|
22
23
|
|
23
24
|
it 'sets a default Accept header of application/json' do
|
@@ -35,6 +36,12 @@ describe LazyResource::Request do
|
|
35
36
|
request = LazyResource::Request.new('http://example.com/api', nil)
|
36
37
|
request.options[:headers][:"X-Access-Token"].should == 'abc'
|
37
38
|
end
|
39
|
+
|
40
|
+
it 'merged the params from the current thread' do
|
41
|
+
Thread.current[:default_params] = { :"access_token" => 'abc' }
|
42
|
+
request = LazyResource::Request.new('https://example.com/api', nil)
|
43
|
+
request.options[:params][:"access_token"].should == 'abc'
|
44
|
+
end
|
38
45
|
end
|
39
46
|
|
40
47
|
describe '#parse' do
|
@@ -86,7 +93,7 @@ describe LazyResource::Request do
|
|
86
93
|
end
|
87
94
|
end
|
88
95
|
|
89
|
-
describe '#
|
96
|
+
describe '#error' do
|
90
97
|
[
|
91
98
|
[301, LazyResource::Redirection],
|
92
99
|
[400, LazyResource::BadRequest],
|
@@ -100,11 +107,11 @@ describe LazyResource::Request do
|
|
100
107
|
[500, LazyResource::ServerError]
|
101
108
|
].each do |error|
|
102
109
|
describe "status: #{error[0]}" do
|
103
|
-
it "
|
110
|
+
it "returns #{error[1]}" do
|
104
111
|
request = LazyResource::Request.new('http://example.com', nil)
|
105
112
|
response = Typhoeus::Response.new(:code => error[0], :headers => {}, :body => '', :time => 0.3)
|
106
113
|
request.response = response
|
107
|
-
|
114
|
+
request.error.should be_a(error[1])
|
108
115
|
end
|
109
116
|
end
|
110
117
|
end
|
@@ -114,7 +121,7 @@ describe LazyResource::Request do
|
|
114
121
|
request = LazyResource::Request.new('http://example.com', nil)
|
115
122
|
response = Typhoeus::Response.new(:code => 402, :headers => {}, :body => '', :time => 0.3)
|
116
123
|
request.response = response
|
117
|
-
|
124
|
+
request.error.should be_a(LazyResource::ClientError)
|
118
125
|
end
|
119
126
|
end
|
120
127
|
end
|
@@ -44,6 +44,7 @@ describe LazyResource::ResourceQueue do
|
|
44
44
|
it 'sends the requests to the request queue and runs the request queue' do
|
45
45
|
@queue.queue(@relation)
|
46
46
|
@queue.should_receive(:send_to_request_queue!)
|
47
|
+
@queue.request_queue.stub(:items_queued?).and_return(true)
|
47
48
|
@queue.request_queue.should_receive(:run)
|
48
49
|
@queue.run
|
49
50
|
end
|
@@ -56,11 +57,57 @@ describe LazyResource::ResourceQueue do
|
|
56
57
|
@queue.send_to_request_queue!
|
57
58
|
@queue.instance_variable_get("@queue").should == []
|
58
59
|
end
|
60
|
+
|
61
|
+
it 'sends the request to the queue using the relation\'s specified method' do
|
62
|
+
LazyResource::Request
|
63
|
+
.should_receive(:new)
|
64
|
+
.with(anything(), anything(), hash_including(:method => :post))
|
65
|
+
.and_call_original
|
66
|
+
|
67
|
+
@relation.method = :post
|
68
|
+
@queue.queue(@relation)
|
69
|
+
@queue.send_to_request_queue!
|
70
|
+
end
|
59
71
|
end
|
60
72
|
|
61
73
|
describe '#url_for' do
|
62
74
|
it 'creates a URL for the given resource' do
|
63
75
|
@queue.url_for(@relation).should == 'http://example.com/users'
|
64
76
|
end
|
77
|
+
|
78
|
+
it 'respects the "from" option when set on a Relation object' do
|
79
|
+
@relation.from = 'people'
|
80
|
+
@queue.url_for(@relation).should == 'http://example.com/people'
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'respects the "from" option when set on a Resource class' do
|
84
|
+
User.from = 'people'
|
85
|
+
@queue.url_for(@relation).should == 'http://example.com/people'
|
86
|
+
User.from = nil
|
87
|
+
end
|
88
|
+
|
89
|
+
context 'using Relation#route' do
|
90
|
+
before :each do
|
91
|
+
@relation = User.where(:_route => '/people/:name')
|
92
|
+
end
|
93
|
+
|
94
|
+
it 'respects the route' do
|
95
|
+
@queue.url_for(@relation).should == 'http://example.com/people/:name'
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'interpolates the route with where_values' do
|
99
|
+
@relation.where(:name => 'Andrew')
|
100
|
+
@queue.url_for(@relation).should == 'http://example.com/people/Andrew'
|
101
|
+
end
|
102
|
+
|
103
|
+
it 'adds the Relation\'s host if one is not already present' do
|
104
|
+
@queue.url_for(@relation).should == 'http://example.com/people/:name'
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'does not add the Relation\'s host if one is already present' do
|
108
|
+
@relation = User.where(:_route => 'http://another_example.com/people/:name')
|
109
|
+
@queue.url_for(@relation).should == 'http://another_example.com/people/:name'
|
110
|
+
end
|
111
|
+
end
|
65
112
|
end
|
66
113
|
end
|
@@ -117,7 +117,7 @@ describe LazyResource::Resource do
|
|
117
117
|
user = User.new(:name => 'Andrew')
|
118
118
|
params = ['http://example.com/users', user, {
|
119
119
|
:method => :post,
|
120
|
-
:
|
120
|
+
:body => { 'user' => { 'name' => 'Andrew' } }.to_json
|
121
121
|
}]
|
122
122
|
request = LazyResource::Request.new(*params)
|
123
123
|
LazyResource::Request.should_receive(:new).with(*params).and_return(request)
|
@@ -148,7 +148,7 @@ describe LazyResource::Resource do
|
|
148
148
|
user.name = 'James'
|
149
149
|
params = ['http://example.com/users/1', user, {
|
150
150
|
:method => :put,
|
151
|
-
:
|
151
|
+
:body => { 'user' => { 'name' => 'James' } }.to_json
|
152
152
|
}]
|
153
153
|
request = LazyResource::Request.new(*params)
|
154
154
|
LazyResource::Request.should_receive(:new).with(*params).and_return(request)
|
@@ -185,7 +185,7 @@ describe LazyResource::Resource do
|
|
185
185
|
user = User.load(:name => 'Andrew', :id => 1)
|
186
186
|
params = ['http://example.com/users/1', user, {
|
187
187
|
:method => :put,
|
188
|
-
:
|
188
|
+
:body => { 'user' => { 'name' => 'James' } }.to_json
|
189
189
|
}]
|
190
190
|
request = LazyResource::Request.new(*params)
|
191
191
|
LazyResource::Request.should_receive(:new).with(*params).and_return(request)
|
@@ -243,8 +243,7 @@ describe LazyResource::Resource do
|
|
243
243
|
|
244
244
|
params = { :id => 1, :created_at => DateTime.now.to_s }
|
245
245
|
user = User.load(params)
|
246
|
-
|
247
|
-
user.as_json(:include_time_ago_in_words => true).should == params
|
246
|
+
user.as_json(:include_time_ago_in_words => true)[:created_at_in_words].should =~ /\d second(s)? ago/
|
248
247
|
end
|
249
248
|
end
|
250
249
|
|
@@ -290,13 +289,28 @@ describe LazyResource::Resource do
|
|
290
289
|
LazyResource::Request.should_receive(:new).with(anything, anything, :headers => { :foo => 'buzz' }).and_return(request)
|
291
290
|
User.find(1, {}, { :headers => { :foo => 'buzz' } })
|
292
291
|
end
|
292
|
+
|
293
|
+
it 'does not trigger fetch_all' do
|
294
|
+
User.should_not_receive(:fetch_all)
|
295
|
+
10.times { User.find(1) }
|
296
|
+
end
|
293
297
|
end
|
294
298
|
|
295
299
|
describe '.where' do
|
300
|
+
after :each do
|
301
|
+
User.from = nil
|
302
|
+
end
|
303
|
+
|
296
304
|
it 'creates a new relation with the passed where values' do
|
297
305
|
users = User.where(:name => 'Andrew')
|
298
306
|
users.where_values.should == { :name => 'Andrew' }
|
299
307
|
end
|
308
|
+
|
309
|
+
it 'forwards the from value' do
|
310
|
+
User.from = :bars
|
311
|
+
users = User.where(:foo => 'bar')
|
312
|
+
users.from.should == :bars
|
313
|
+
end
|
300
314
|
end
|
301
315
|
|
302
316
|
describe '.order' do
|
@@ -350,7 +364,7 @@ describe LazyResource::Resource do
|
|
350
364
|
user = User.new(:name => 'Andrew')
|
351
365
|
params = ['http://example.com/users', user, {
|
352
366
|
:method => :post,
|
353
|
-
:
|
367
|
+
:body => { 'user' => { 'name' => 'Andrew' } }.to_json
|
354
368
|
}]
|
355
369
|
request = LazyResource::Request.new(*params)
|
356
370
|
LazyResource::Request.should_receive(:new).with(*params).and_return(request)
|
@@ -13,15 +13,16 @@ class Item
|
|
13
13
|
def site
|
14
14
|
'http://example.com/'
|
15
15
|
end
|
16
|
+
|
17
|
+
def primary_key_name
|
18
|
+
'id'
|
19
|
+
end
|
16
20
|
end
|
17
21
|
|
18
22
|
def initialize
|
23
|
+
@id = 1
|
19
24
|
@attributes = {}
|
20
25
|
end
|
21
|
-
|
22
|
-
def primary_key
|
23
|
-
1
|
24
|
-
end
|
25
26
|
end
|
26
27
|
|
27
28
|
describe LazyResource::UrlGeneration do
|
@@ -151,5 +152,10 @@ describe LazyResource::UrlGeneration do
|
|
151
152
|
prefix_options.should == { :comment_id => 1 }
|
152
153
|
query_options.should == { :name => 'Andrew' }
|
153
154
|
end
|
155
|
+
|
156
|
+
it 'ignores _ids params' do
|
157
|
+
prefix_options, query_options = Item.split_options(:name => 'Andrew', :comment_ids => '1,2')
|
158
|
+
query_options.should == { :name => 'Andrew', :comment_ids => '1,2' }
|
159
|
+
end
|
154
160
|
end
|
155
161
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,52 +1,46 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lazy_resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.5.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Andrew Latimer
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: activemodel
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 3.1
|
19
|
+
version: '3.1'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 3.1
|
26
|
+
version: '3.1'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: activesupport
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
|
-
- -
|
31
|
+
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: 3.1
|
33
|
+
version: '3.1'
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
|
-
- -
|
38
|
+
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: 3.1
|
40
|
+
version: '3.1'
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: json
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - ! '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - ! '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,19 +55,17 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: typhoeus
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - '='
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version: 0.6.
|
61
|
+
version: 0.6.6
|
70
62
|
type: :runtime
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - '='
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version: 0.6.
|
68
|
+
version: 0.6.6
|
78
69
|
description: ActiveResource with its feet up. The write less, do more consumer of
|
79
70
|
delicious APIs.
|
80
71
|
email:
|
@@ -86,9 +77,11 @@ files:
|
|
86
77
|
- .gitignore
|
87
78
|
- .rspec
|
88
79
|
- .rvmrc
|
80
|
+
- .travis.yml
|
89
81
|
- Gemfile
|
90
82
|
- Guardfile
|
91
83
|
- LICENSE
|
84
|
+
- NOTES.md
|
92
85
|
- README.md
|
93
86
|
- Rakefile
|
94
87
|
- examples/github.rb
|
@@ -99,6 +92,7 @@ files:
|
|
99
92
|
- lib/lazy_resource/errors.rb
|
100
93
|
- lib/lazy_resource/ext/typhoeus.rb
|
101
94
|
- lib/lazy_resource/http_mock.rb
|
95
|
+
- lib/lazy_resource/log_subscriber.rb
|
102
96
|
- lib/lazy_resource/mapping.rb
|
103
97
|
- lib/lazy_resource/relation.rb
|
104
98
|
- lib/lazy_resource/request.rb
|
@@ -115,6 +109,7 @@ files:
|
|
115
109
|
- spec/lazy_resource/errors_spec.rb
|
116
110
|
- spec/lazy_resource/ext/typhoeus_spec.rb
|
117
111
|
- spec/lazy_resource/lazy_resource_spec.rb
|
112
|
+
- spec/lazy_resource/log_subscriber_spec.rb
|
118
113
|
- spec/lazy_resource/mapping_spec.rb
|
119
114
|
- spec/lazy_resource/relation_spec.rb
|
120
115
|
- spec/lazy_resource/request_spec.rb
|
@@ -125,33 +120,26 @@ files:
|
|
125
120
|
- spec/spec_helper.rb
|
126
121
|
homepage: http://github.com/ahlatimer/lazy_resource
|
127
122
|
licenses: []
|
123
|
+
metadata: {}
|
128
124
|
post_install_message:
|
129
125
|
rdoc_options: []
|
130
126
|
require_paths:
|
131
127
|
- lib
|
132
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
129
|
requirements:
|
135
130
|
- - ! '>='
|
136
131
|
- !ruby/object:Gem::Version
|
137
132
|
version: '0'
|
138
|
-
segments:
|
139
|
-
- 0
|
140
|
-
hash: -3444122050560505401
|
141
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
142
|
-
none: false
|
143
134
|
requirements:
|
144
135
|
- - ! '>='
|
145
136
|
- !ruby/object:Gem::Version
|
146
137
|
version: '0'
|
147
|
-
segments:
|
148
|
-
- 0
|
149
|
-
hash: -3444122050560505401
|
150
138
|
requirements: []
|
151
139
|
rubyforge_project:
|
152
|
-
rubygems_version:
|
140
|
+
rubygems_version: 2.2.1
|
153
141
|
signing_key:
|
154
|
-
specification_version:
|
142
|
+
specification_version: 4
|
155
143
|
summary: ActiveResource with its feet up. The write less, do more consumer of delicious
|
156
144
|
APIs.
|
157
145
|
test_files:
|
@@ -163,6 +151,7 @@ test_files:
|
|
163
151
|
- spec/lazy_resource/errors_spec.rb
|
164
152
|
- spec/lazy_resource/ext/typhoeus_spec.rb
|
165
153
|
- spec/lazy_resource/lazy_resource_spec.rb
|
154
|
+
- spec/lazy_resource/log_subscriber_spec.rb
|
166
155
|
- spec/lazy_resource/mapping_spec.rb
|
167
156
|
- spec/lazy_resource/relation_spec.rb
|
168
157
|
- spec/lazy_resource/request_spec.rb
|